ホレート
| 分子式: | C7H17O2PS3 | 
| その他の名称: | チメット、ホラート、グラヌトックス、Thimet、EI-3911、Phorate、Granutox、ENT-24042、American Cyanamid 3911、Phosphorodithioic acid O,O-diethyl S-(ethylthio)methyl、Dithiophosphoric acid O,O-diethyl S-(ethylthio)methyl ester、チメット10G、チメットG、Timet、ホラート10G、ホレート、Thimet 10G、VUAgT 182、Phorate 10G、Thimet G | 
| 体系名: | ジチオりん酸O,O-ジエチルS-[(エチルチオ)メチル]、ジチオりん酸O,O-ジエチルS-(エチルチオ)メチル | 
time_t
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/09/23 17:09 UTC 版)
|   | 
time_t型は、C言語においてシステム時刻を表現あるいは保存するために標準Cライブラリが定義しているデータ型である。この値は標準ライブラリ関数のtime()によって得られる。このデータ型は、標準ヘッダファイルの<time.h>でtypedefによって定義されている。Cの国際標準規格ISO/IEC 9899:1999(通称C99)では、time_tを算術型 (arithmetic type[1][2][注釈 1]) と規定しており、またISO/IEC 9899:2011(通称C11)では実数型 (real type[3][4][注釈 2]) と規定しているが、実際の型・値の範囲・周期や、エンコーディング方法は規定しておらず、実装定義 (implementation-defined) としている。また、時刻の値に対する算術演算の動作は定義していない(2つのtime_t型の値の差を求めるにはdifftime()を用いる)。 
UNIXとPOSIX互換システムでは、UNIX時間(協定世界時 (UTC) 1970年1月1日0時00分00秒からの秒数)を表す符号付の整数(通常は32ビットまたは64ビット)でtime_t型を実装している(閏秒は数えない)。いくつかのシステム[要説明]では、負の時刻値をサポートするが、サポートしないシステムもある。2038年問題のために、32ビットのtime_tは非難されている[5]。 そのため、
   最近[いつ?]のシステムには、time_tを64ビットの整数型として定義しているものが多いが、古いシステムではそうでないものもあるので注意が必要である。 
ISO Cでは、time()関数だけでなく、システム時刻time_tの値をカレンダー時刻に変換する関数や、逆の変換を行なう関数などを定義している。 
利用例
以下のC言語のコードは現在時刻をtime_t型の値として取得し、文字列に変換して標準出力に出力する例である。 
#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);
    printf("%lld\n", (long long)now);
    return 0;
}
  tmは、「要素別の時刻」(broken-down time) と呼ばれるカレンダー時刻の構成要素集合を保持する構造体である。C99において、tm構造体は少なくとも下記のメンバーを任意の順序で含むように規定されている(実装によっては他の追加メンバーを含んでいることもある)。そのため、何らかの関数を使ってtime_tの値からtm構造体の値を得た後、これらのメンバーを直接読み取って日時情報を取得することも可能である。文字列への書式化にstrftime()を使う必要はなく、printf系の関数を使うこともできる。 
struct tm {
    int tm_sec; // seconds after the minute — [0, 60]
    int tm_min; // minutes after the hour — [0, 59]
    int tm_hour; // hours since midnight — [0, 23]
    int tm_mday; // day of the month — [1, 31]
    int tm_mon; // months since January — [0, 11]
    int tm_year; // years since 1900
    int tm_wday; // days since Sunday — [0, 6]
    int tm_yday; // days since January 1 — [0, 365]
    int tm_isdst; // Daylight Saving Time flag
};
  BSD/GNU拡張では、tm構造体に追加のメンバーtm_gmtoffとtm_zoneが含まれている[6]。 
前述のコード例で使用されているlocaltime()関数は、time_tの値をローカル時刻としてtm構造体の値に変換し、そのアドレスを指すポインタを返す。他にもUTC時刻として変換して返すgmtime()関数も規定されている。しかし、これらの関数は仕様に欠陥があり、リエントラント性やスレッドセーフ性が保証されない。スレッドの概念が標準化されたC11では、変換結果の出力先へのポインタstruct tm*を引数として別途受け取るスレッドセーフバージョンのlocaltime_s()とgmtime_s()が標準化されたが、境界チェック付き関数と同様、必須機能ではなくオプションである[7][8]。 
POSIXでは、変換結果の出力先へのポインタを引数として別途受け取り、リエントラント性とスレッドセーフ性を保証したlocaltime_r()/gmtime_r()が規定されている[9][10]。C23ではPOSIXベースのlocaltime_r()/gmtime_r()が標準化される予定である[7][8]。 
Microsoft Visual C++ (MSVC) では、呼び出しスレッドごとに変数の記憶域を確保するスレッドローカルストレージをlocaltime()/gmtime()の実装に用いることで、スレッドセーフ性を実現している[11][12]。また、変換結果の出力先へのポインタを引数として別途受け取るlocaltime_s()/gmtime_s()も用意されている[13][14]。ただし、POSIXのlocaltime_r()/gmtime_r()や、C11のlocaltime_s()/gmtime_s()とは互換性がない。 
strftime()は現在設定されているロケールLC_TIMEの影響を受ける。書式文字列における変換指定子%Zは、ロケールのタイムゾーンの名前または略称 (abbreviation) によって置換されるが、タイムゾーン情報が判定できない場合は空文字列となる。変換指定子%zは、ISO 8601形式でUTCからのオフセット(+hhmmまたは-hhmm)によって置換されるが、タイムゾーン情報が判定できない場合は空文字列となる。%zはもともとGNU拡張だったものがC99とPOSIX.1-2001で標準化された[15]。MSVCの実装では、タイムゾーン情報はグローバル変数_timezoneと_dstbiasを経由して追加投入されるため、gmtime()が返すtm構造体へのポインタをstrftime()に渡した場合、%Zや%zによって出力される結果は不正確なものとなる[16]。POSIXではタイムゾーン情報を表す環境変数TZが使用されるが、tm構造体の値を各種関数呼び出しによって生成した後にTZの値が変更された場合、%Zや%zによって出力される結果は未定義となる[17]。 
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 UTC、UNIX billennium(UNIX時刻が1000000000)の祝賀が行なわれた。
2005年3月18日 01:58:31 UTC、UNIX時刻が1111111111に到達した。
2009年2月13日 23:31:30 UTC、UNIX時刻が1234567890に到達し、世界中のさまざまなテクノロジーサブカルチャーの間でパーティーやその他の祝賀会が開催された。
2033年5月18日 03:33:20 UTC、2回目のUNIX billennium(UNIX時刻が2000000000)の祝賀が行なわれる予定。
脚注
注釈
出典
- ^ ISO/IEC 9899:1999, §7.23.1 Components of time, ¶3
- ^ ISO/IEC 9899:TC3 WG14/N1256 Committee Draft
- ^ ISO/IEC 9899:2011, §7.27.1 Components of time, ¶3
- ^ ISO/IEC 9899:201x N1570 Committee Draft
- ^ The Year 2038 problem, Roger M. Wilcox. Retrieved on 2008年5月19日.
- ^ Broken-down Time (The GNU C Library)
- ^ a b localtime, localtime_r, localtime_s - cppreference.com
- ^ a b gmtime, gmtime_r, gmtime_s - cppreference.com
- ^ localtime, localtime_r - convert a time value to a broken-down local time | The Open Group Base Specifications Issue 6 / IEEE Std 1003.1, 2004 Edition
- ^ gmtime, gmtime_r - convert a time value to a broken-down UTC time | The Open Group Base Specifications Issue 6 / IEEE Std 1003.1, 2004 Edition
- ^ localtime, _localtime32, _localtime64 | Microsoft Learn
- ^ gmtime, _gmtime32, _gmtime64 | Microsoft Learn
- ^ localtime_s, _localtime32_s, _localtime64_s | Microsoft Learn
- ^ gmtime_s, _gmtime32_s, _gmtime64_s | Microsoft Learn
- ^ Formatting Calendar Time (The GNU C Library)
- ^ strftime, wcsftime, _strftime_l, _wcsftime_l | Microsoft Learn
- ^ strftime - convert date and time to a string | The Open Group Base Specifications Issue 6 / IEEE Std 1003.1, 2004 Edition
関連項目
固有名詞の分類
「time_t」に関係したコラム
- 
FX(外国為替証拠金取引)のチャート分析ソフトMT4(Meta Trader 4)での時刻表示は、MT4のダウンロード先にもよりますが、一般的には中央ヨーロッパ時間であることが多いようです。日本時間の... 
- FXのチャート分析ソフトMT4で10分足や2時間足などを表示するには - FX(外国為替証拠金取引)のチャート分析ソフトMT4(Meta Trader 4)では、次の時間足の表示ができます。ティック1分足5分足15分足30分足1時間足4時間足日足週足MT4では、10分足や1... 
- FXのチャート分析ソフトMT4をインストールしてまずやること - FX(外国為替証拠金取引)のチャート分析ソフトMT4(Meta Trader 4)をインストールしたら、まずやっておきたいことをいくつか紹介します。これらは、あらかじめ設定しておくことで、MT4での操... 
- FXのチャート分析ソフトMT4で1つのチャート画面に2つの通貨ペアを表示するには - FX(外国為替証拠金取引)のチャート分析ソフトMT4(Meta Trader 4)では、1つのチャート画面に1つの通貨ペアのチャートが表示できます。2つの通貨ペアのチャートを見比べたい時には、2つのチ... 
- FXのチャート分析ソフトMT4でよく使うテクニカル指標をまとめて表示するには - FX(外国為替証拠金取引)のチャート分析ソフトMT4(Meta Trader 4)には、さまざまなテクニカル指標が表示できます。1つのチャート画面に複数のテクニカル指標を表示させることもできます。しか... 
- 
FX(外国為替証拠金取引)のチャート分析ソフトMT4(Meta Trader 4)のマルチタイムフレーム(Multi time frame、MTF)とは、1つのチャート画面に他の時間足のチャートを表示... 
- time_tのページへのリンク

 
                             
                    





