名前空間
変種
操作

std::mktime

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

ローカルカレンダー時刻をエポックからの時刻としてstd::time_tオブジェクトに変換します。time->tm_wdaytime->tm_ydayは無視されます。timeの値は、通常の範囲外であっても許可されます。

time->tm_isdst の負の値は、夏時間(Daylight Saving Time)が有効であったかどうかを mktime に試行させます。

変換が成功した場合、 time オブジェクトは変更されます。 time のすべてのフィールドは、適切な範囲に収まるように更新されます。 time->tm_wdaytime->tm_yday は、他のフィールドで利用可能な情報を使用して再計算されます。

目次

[編集] パラメータ

time - 変換するローカルカレンダー時刻を指定する std::tm オブジェクトへのポインタ

[編集] 戻り値

成功した場合はエポックからの時刻を std::time_t オブジェクトとして返します。 timestd::time_t オブジェクトとして表現できない場合は -1 を返します。

[編集] 注記

std::tm オブジェクトが std::get_time または POSIX の strptime から取得された場合、 tm_isdst の値は不定であり、 mktime を呼び出す前に明示的に設定する必要があります。

[編集]

ローカル時刻を明示的に構築します。

#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::tm local = *std::localtime(&t);
 
    std::cout << "local: " << std::put_time(&local, "%c %Z") << '\n';
}

実行結果の例

local: Sat Feb 15 10:15:00 2020 PST

[編集] 関連項目

エポックからの時間を、地方時で表されるカレンダー時間に変換する
(関数) [編集]
"https://ja.cppreference.dev/mwiki/index.php?title=cpp/chrono/c/mktime&oldid=158568" から取得
English 日本語 中文(简体) 中文(繁體)