time_t

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内, 検索

time_t データ型は、システム時刻を保存するために標準Cライブラリが定義しているデータ型である。この値は標準のtime()ライブラリ関数によって得られる。このデータ型は、標準のtime.hヘッダファイルでtypedefによって定義されている。ISO Cでは、time_t を、数値型と定義しているが、データ型値の範囲周期や、エンコーディング方法は定義していない。また、時刻の値に対する算術演算の動作は定義していない。

UNIXPOSIX互換システムでは、UNIX時間1970年1月1日 UTC真夜中からの秒数)を表す符号付の整数(通常は32または64ビット)でtime_t 型を実装している(閏秒は数えない)。いくつかのシステムでは、負の時刻値をサポートするが、サポートしないシステムもある。2038年問題のために、32ビットのtime_tは非難されている[1]

ISO Cでは、time()関数だけでなく、システム時刻time_t の値をカレンダー時刻に変換したり、逆の変換を行う関数を定義している。

目次

[編集]

以下のC言語のコードは現在時刻を取得し、文字列に整形し、標準出力へ出力する。

#include <stdio.h>
#include <time.h>
 
/*
* The result should look something like
* Fri 2008-08-22 15:21:59 WAST
*/
 
int main(void)
{
    time_t     now;
    struct tm  *ts;
    char       buf[80];
 
    // Get the current time
    now = time(NULL);
 
    // Format and print the time, "ddd yyyy-mm-dd hh:mm:ss zzz"
    ts = localtime(&now);
    strftime(buf, sizeof(buf), "%a %Y-%m-%d %H:%M:%S %Z", ts);
    printf("%s\n", buf);
 
    return 0;
}

[編集] time_tパーティ

UNIXファンは、UNIX時間の意味ありげな値を祝賀するためにtime_tパーティを行ってきた歴史がある。これは、多くの暦で年が変わるときに行われる新年パーティと良く似ている。UNIX時間の使用が広がったことで、マイルストーンを祝うことが習慣となった。通常は端数のない10進数の時刻の値が、time_t の値を10進数で眺めるUNIXのコンベンションで祝賀される。一部のグループは、2004年1月10日の13:37:04 UTCに起こった+230のような端数のない2進数も祝賀している。

これらの祝賀イベントは、通常は「UNIX epochからN秒」と呼ばれるが、これは不正確である。上で述べたとおり、UNIX時刻の閏秒の扱いのため、UNIX epochからの秒数はUNIX時刻の数よりもわずかに大きい。

2001年9月9日 01:46:40 UTCUNIX billennium(UNIX時刻が1000000000)が祝賀が行われた。

2005年5月18日 01:58:31 UTC、UNIX時刻が1111111111に到達した。

2009年2月13日 23:31:30 UTC、UNIX時刻が1234567890に到達する祝賀が行われる見込みである。この日は偶然にもグレゴリオ暦13日の金曜日である。16進数で表したUNIX時刻の0x50000000(1342177280秒)も、偶然13日の金曜日である(2012年7月13日11:01:20 UTC)。

2033年5月18日 03:33:20 UTC、2回目のUNIX billennium(UNIX時刻が2000000000)の祝賀が行われる予定。

[編集] 関連項目

[編集] 参照

  1. ^ The Year 2038 problem, Roger M. Wilcox. Retrieved on 2008年5月19日.
個人用ツール
名前空間
変種
操作
案内
ヘルプ
ツールボックス
他の言語