std::localtime

From cppreference.com
< cpplrm; | chronolrm; | c
Date and time utilities
(C++11)
(C++11)
Clocks
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
Calendars
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
Time zones
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
C-style date and time
C-style date and time utilities
Functions
Time manipulation
Format conversions
localtime
Constants
Types
(C++17)
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.

Parameters

time - pointer to a time_t object to convert

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.

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.

Example

#include <iostream>
#include <iomanip>
#include <ctime>
#include <stdlib.h> // defines putenv in POSIX

int main()
{
    std::time_t t = std::time(nullptr);
    std::cout << "UTC:       " << std::put_time(std::gmtime(&t), "%c%Z") << '\n';
    std::cout << "local:     " << std::put_time(std::localtime(&t), "%c%Z") << '\n';
    // POSIX-specific:
    std::string tz = "TZ=Asia/Singapore";
    putenv(tz.data());
    std::cout << "Singapore: " << std::put_time(std::localtime(&t), "%c%Z") << '\n';
}

Output:

UTC:       Fri Sep 15 14:16:29 2017 GMT
local:     Fri Sep 15 14:16:29 2017 UTC
Singapore: Fri Sep 15 22:16:29 2017 SGT

See also

converts time since epoch to calendar time expressed as Universal Coordinated Time
(function)