Difference between revisions of "cpp/chrono/c/localtime"
From cppreference.com
m (null pointer) |
m (→Synopsis: " *" → "* " (for consistency)) |
||
(10 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
− | {{cpp/title| localtime}} | + | {{cpp/title|localtime}} |
{{cpp/chrono/c/navbar}} | {{cpp/chrono/c/navbar}} | ||
− | {{ddcl | header=ctime | | + | {{ddcl|header=ctime| |
− | std::tm* localtime( const std::time_t *time ); | + | std::tm* localtime( const std::time_t* time ); |
}} | }} | ||
Line 9: | Line 9: | ||
===Parameters=== | ===Parameters=== | ||
{{par begin}} | {{par begin}} | ||
− | {{par | time | pointer to a time_t object to convert}} | + | {{par|time|pointer to a {{lc|std::time_t}} object to convert}} |
{{par end}} | {{par end}} | ||
===Return value=== | ===Return value=== | ||
− | + | Pointer to a static internal {{lc|std::tm}} object on success, or null pointer otherwise. The structure may be shared between {{lc|std::gmtime}}, {{lc|std::localtime}}, and {{lc|std::ctime}}, and may be overwritten on each invocation. | |
− | + | ||
===Notes=== | ===Notes=== | ||
Line 21: | Line 20: | ||
POSIX requires that this function sets {{lc|errno}} to {{lc|EOVERFLOW}} if it fails because the argument is too large. | POSIX requires that this function sets {{lc|errno}} to {{lc|EOVERFLOW}} if it fails because the argument is too large. | ||
− | [ | + | [https://pubs.opengroup.org/onlinepubs/9699919799/functions/localtime.html POSIX specifies] that the timezone information is determined by this function as if by calling [https://pubs.opengroup.org/onlinepubs/9699919799/functions/tzset.html {{tt|tzset}}], which reads the environment variable {{c|TZ}}. |
===Example=== | ===Example=== | ||
{{example | {{example | ||
− | + | |code= | |
− | + | #include <ctime> | |
+ | #include <iomanip> | ||
#include <iostream> | #include <iostream> | ||
− | #include < | + | #include <sstream> |
− | + | ||
− | + | ||
− | + | ||
int main() | int main() | ||
{ | { | ||
− | + | setenv("TZ", "/usr/share/zoneinfo/America/Los_Angeles", 1); // POSIX-specific | |
− | std:: | + | |
− | std::cout << " | + | std::tm tm{}; // Zero initialise |
− | + | tm.tm_year = 2020 - 1900; // 2020 | |
− | + | tm.tm_mon = 2 - 1; // February | |
− | + | tm.tm_mday = 15; // 15th | |
− | std::cout << " | + | tm.tm_hour = 10; |
+ | tm.tm_min = 15; | ||
+ | tm.tm_isdst = 0; // Not daylight saving | ||
+ | std::time_t t = std::mktime(&tm); | ||
+ | |||
+ | std::cout << "UTC: " << std::put_time(std::gmtime(&t), "%c %Z") << '\n'; | ||
+ | std::cout << "local: " << std::put_time(std::localtime(&t), "%c %Z") << '\n'; | ||
} | } | ||
− | + | |p=true | |
− | UTC: | + | |output= |
− | local: | + | UTC: Sat Feb 15 18:15:00 2020 GMT |
− | + | local: Sat Feb 15 10:15:00 2020 PST | |
}} | }} | ||
===See also=== | ===See also=== | ||
{{dsc begin}} | {{dsc begin}} | ||
− | {{dsc inc | cpp/chrono/c/dsc gmtime}} | + | {{dsc inc|cpp/chrono/c/dsc gmtime}} |
− | {{dsc see c | c/chrono/localtime}} | + | {{dsc inc|c/chrono/dsc localtime}} |
+ | {{dsc see c|c/chrono/localtime}} | ||
{{dsc end}} | {{dsc end}} | ||
{{langlinks|de|es|fr|it|ja|pt|ru|zh}} | {{langlinks|de|es|fr|it|ja|pt|ru|zh}} |
Latest revision as of 14:44, 9 September 2023
Defined in header <ctime>
|
||
std::tm* localtime( const std::time_t* time ); |
||
Converts given time since epoch as std::time_t value into calendar time, expressed in local time.
Contents |
[edit] Parameters
time | - | pointer to a std::time_t object to convert |
[edit] Return value
Pointer to a static internal std::tm object on success, or null pointer otherwise. The structure may be shared between std::gmtime, std::localtime, and std::ctime, and may be overwritten on each invocation.
[edit] Notes
This function may not be thread-safe.
POSIX requires that this function sets errno to EOVERFLOW if it fails because the argument is too large.
POSIX specifies that the timezone information is determined by this function as if by calling tzset
, which reads the environment variable TZ.
[edit] Example
Run this code
#include <ctime> #include <iomanip> #include <iostream> #include <sstream> int main() { setenv("TZ", "/usr/share/zoneinfo/America/Los_Angeles", 1); // POSIX-specific std::tm tm{}; // Zero initialise tm.tm_year = 2020 - 1900; // 2020 tm.tm_mon = 2 - 1; // February tm.tm_mday = 15; // 15th tm.tm_hour = 10; tm.tm_min = 15; tm.tm_isdst = 0; // Not daylight saving std::time_t t = std::mktime(&tm); std::cout << "UTC: " << std::put_time(std::gmtime(&t), "%c %Z") << '\n'; std::cout << "local: " << std::put_time(std::localtime(&t), "%c %Z") << '\n'; }
Possible output:
UTC: Sat Feb 15 18:15:00 2020 GMT local: Sat Feb 15 10:15:00 2020 PST
[edit] See also
converts time since epoch to calendar time expressed as Universal Coordinated Time (function) | |
(C23)(C11) |
converts time since epoch to calendar time expressed as local time (function) |
C documentation for localtime
|