Namespaces
Variants

std:: localtime

From cppreference.net
< cpp ‎ | chrono ‎ | c
ヘッダーで定義 <ctime>
std:: tm * localtime ( const std:: time_t * time ) ;

エポックからの経過時間を std::time_t 値として受け取り、ローカル時間で表現された暦時間に変換します。

目次

パラメータ

time - 変換対象の std::time_t オブジェクトへのポインタ

戻り値

成功時は静的内部 std::tm オブジェクトへのポインタ、それ以外の場合はヌルポインタを返します。この構造体は std::gmtime std::localtime 、および std::ctime 間で共有される可能性があり、各呼び出し時に上書きされる可能性があります。

注記

この関数はスレッドセーフではない可能性があります。 Microsoft CRT の実装はスレッドセーフです。

POSIXでは、この関数は引数が大きすぎるために失敗した場合、 errno EOVERFLOW に設定することを要求しています。

POSIXは タイムゾーン情報がこの関数によって、 tzset を呼び出すかのように決定されると規定しています。これは環境変数 TZ を読み取ります。

#include <ctime>
#include <iomanip>
#include <iostream>
#include <sstream>
int main()
{
    setenv("TZ", "/usr/share/zoneinfo/America/Los_Angeles", 1); // POSIX固有
    std::tm tm{}; // ゼロ初期化
    tm.tm_year = 2020 - 1900; // 2020年
    tm.tm_mon = 2 - 1; // 2月
    tm.tm_mday = 15; // 15日
    tm.tm_hour = 10;
    tm.tm_min = 15;
    tm.tm_isdst = 0; // 夏時間ではない
    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';
}

出力例:

UTC:   Sat Feb 15 18:15:00 2020 GMT
local: Sat Feb 15 10:15:00 2020 PST

関連項目

エポックからの経過時間を協定世界時で表した暦時刻に変換する
(関数)
エポックからの経過時間を現地時間で表した暦時刻に変換する
(関数)
Cドキュメント for localtime