名前空間
変種
操作

std::mktime

提供: cppreference.com
< cpp‎ | chrono‎ | c
 
 
 
日付と時間のユーティリティ
(C++11)
(C++11)
時計
(C++20)
                                                  
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
カレンダー
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
タイムゾーン
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
C スタイルの日付と時間
 
 
ヘッダ <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 オブジェクトとしてのエポックからの経過時間。 timestd::time_t オブジェクトとして表せなければ -1

[編集] ノート

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

[編集]

100ヶ月前の時刻を表示します。

#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

[編集] 関連項目

エポックからの経過時間を現地時間で表されるカレンダー時刻に変換します
(関数) [edit]