std::mktime
提供: cppreference.com
ヘッダ <ctime> で定義
|
||
std::time_t mktime( std::tm* time ); |
||
ローカルカレンダー時刻を time_t のオブジェクトとしてのエポックからの経過時間に変換します。 time->tm_wday
および time->tm_yday
は無視されます。 time
内の値は通常の範囲外でも構いません。
time->tm_isdst
を負の値にすると 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
を呼ぶ前に明示的に設定する必要があります。
[編集] 例
100ヶ月前の時刻を表示します。
Run this code
#include <iostream> #include <iomanip> #include <ctime> #include <stdlib.h> int main() { setenv("TZ", "/usr/share/zoneinfo/America/New_York", 1); // POSIX-specific std::time_t t = std::time(nullptr); std::tm tm = *std::localtime(&t); std::cout << "Today is " << std::put_time(&tm, "%c %Z") << " and DST is " << (tm.tm_isdst ? "in effect" : "not in effect") << '\n'; tm.tm_mon -= 100; // tm_mon is now outside its normal range std::mktime(&tm); // tm_dst is not set to -1; today's DST status is used std::cout << "100 months ago was " << std::put_time(&tm, "%c %Z") << " and DST was " << (tm.tm_isdst ? "in effect" : "not in effect") << '\n'; }
出力:
Today is Fri Apr 22 11:40:36 2016 EDT and DST is in effect 100 months ago was Sat Dec 22 10:40:36 2007 EST and DST was not in effect
[編集] 関連項目
エポックからの経過時間を現地時間で表されるカレンダー時刻に変換します (関数) | |
mktime の C言語リファレンス
|