Main Content

MISRA C:2023 Rule 21.10

The Standard Library time and date functions shall not be used

Since R2024a

Description

Rule Definition

The Standard Library time and date functions shall not be used1 .

Rationale

Using these functions can cause unspecified, undefined and implementation-defined behavior.

Polyspace Implementation

Polyspace® reports violations on the use of various time and date functions and related types from the standard library. Flagged functions and types include:

  • Types, constants, and functions from the header time.h. Including this header is reported as a violation.

  • The function wcsftime() from the wchar.h

If you redefine any of the standard library functions as functions or function-like-macros, Polyspace does not report violations on the user-defined functions or function-like-macros.

Troubleshooting

If you expect a rule violation but do not see it, refer to Diagnose Why Coding Standard Violations Do Not Appear as Expected.

Examples

expand all

In this example, the uses of functions and types from the time.h header file are reported as violations of this rule.

#include <stdio.h>
#include <wchar.h>
#include <time.h>              /*Noncompliant*/

typedef time_t my_time_t;                      /*Noncompliant*/

typedef const struct tm my_const_tm_t;         /*Noncompliant*/

void foo(void) {
	clock_t begin = clock();   /*Noncompliant*/

	/* Perform some computation or operation here that you want to measure */

	clock_t end = clock();     /*Noncompliant*/

	double time_spent = (double)(end - begin) / CLOCKS_PER_SEC; /*Noncompliant*/

	printf("Time taken for computation: %f seconds\n", time_spent);

}


void bar() {
	time_t current_time;       /*Noncompliant*/
	time(&current_time);       /*Noncompliant*/
	struct tm *local_time =                   /*Noncompliant*/
	                localtime(&current_time);   /*Noncompliant*/

}

Check Information

Group: Standard Libraries
Category: Required
AGC Category: Required

Version History

Introduced in R2024a

expand all


1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.

The MISRA coding standards referenced in the Polyspace Bug Finder™ documentation are from the following MISRA standards:

  • MISRA C:2004

  • MISRA C:2012

  • MISRA C:2023

  • MISRA C++:2008

  • MISRA C++:2023

MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.