Main Content

MISRA C:2012 Rule 21.10

The Standard Library time and date functions shall not be used

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

  • The function wcsftime() from the wchar.h

If the function is a macro and the macro is expanded in the code, this rule is violated. It is assumed that rule 21.2 is not violated.

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 fucntion-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 R2014b

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.