Defined in header <time.h> | ||
|---|---|---|
struct tm *localtime ( const time_t *timer ); | (1) | |
struct tm *localtime_r( const time_t *timer, struct tm *buf ); | (2) | (since C23) |
struct tm *localtime_s( const time_t *restrict timer, struct tm *restrict buf ); | (3) | (since C11) |
time_t value pointed to by timer) into calendar time, expressed in local time, in the struct tm format. The result is stored in static storage and a pointer to that static storage is returned.buf for the result.buf for the result and that the following errors are detected at runtime and call the currently installed constraint handler function: timer or buf is a null pointer localtime_s only guaranteed to be available if __STDC_LIB_EXT1__ is defined by the implementation and if the user defines __STDC_WANT_LIB_EXT1__ to the integer constant 1 before including <time.h>.| timer | - | pointer to a time_t object to convert |
| buf | - | pointer to a struct tm object to store the result |
tm object on success, or null pointer otherwise. The structure may be shared between gmtime, localtime, and ctime and may be overwritten on each invocation.buf pointer, or null pointer on error (which may be a runtime constraint violation or a failure to convert the specified time to local calendar time)The function localtime may not be thread-safe.
POSIX requires that localtime and localtime_r set errno to EOVERFLOW if it fails because the argument is too large.
POSIX specifies that the timezone information is determined by localtime and localtime_r as if by calling tzset, which reads the environment variable TZ.
The implementation of localtime_s in Microsoft CRT is incompatible with the C standard since it has reversed parameter order and returns errno_t.
#define __STDC_WANT_LIB_EXT1__ 1
#define _XOPEN_SOURCE // for putenv
#include <time.h>
#include <stdio.h>
#include <stdlib.h> // for putenv
int main(void)
{
time_t t = time(NULL);
printf("UTC: %s", asctime(gmtime(&t)));
printf("local: %s", asctime(localtime(&t)));
// POSIX-specific
putenv("TZ=Asia/Singapore");
printf("Singapore: %s", asctime(localtime(&t)));
#ifdef __STDC_LIB_EXT1__
struct tm buf;
char str[26];
asctime_s(str,sizeof str,gmtime_s(&t, &buf));
printf("UTC: %s", str);
asctime_s(str,sizeof str,localtime_s(&t, &buf));
printf("local: %s", str);
#endif
}Possible output:
UTC: Fri Sep 15 14:22:05 2017 local: Fri Sep 15 14:22:05 2017 Singapore: Fri Sep 15 22:22:05 2017 UTC: Fri Sep 15 14:22:05 2017 local: Fri Sep 15 14:22:05 2017
|
(C23)(C11) | converts time since epoch to calendar time expressed as Coordinated Universal Time (UTC) (function) |
C++ documentation for localtime |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/chrono/localtime