std::mktime
From cppreference.com
| ヘッダ <ctime> で定義 |
||
| std::time_t mktime( std::tm* time ); |
||
ローカルカレンダー時刻をエポックからの時刻としてstd::time_tオブジェクトに変換します。time->tm_wdayとtime->tm_ydayは無視されます。timeの値は、通常の範囲外であっても許可されます。
time->tm_isdst の負の値は、夏時間(Daylight Saving Time)が有効であったかどうかを mktime に試行させます。
変換が成功した場合、 time オブジェクトは変更されます。 time のすべてのフィールドは、適切な範囲に収まるように更新されます。 time->tm_wday と time->tm_yday は、他のフィールドで利用可能な情報を使用して再計算されます。
目次 |
[編集] パラメータ
| time | - | 変換するローカルカレンダー時刻を指定する std::tm オブジェクトへのポインタ |
[編集] 戻り値
成功した場合はエポックからの時刻を std::time_t オブジェクトとして返します。 time が std::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
[編集] 関連項目
| エポックからの時間を、地方時で表されるカレンダー時間に変換する (関数) | |
| mktime の C ドキュメント
| |