C言語の日付と時刻関数
| C標準ライブラリ(libc) |
|---|
| 一般的なトピック |
| その他のヘッダー |
C言語の日付・時刻関数は、C言語の標準ライブラリに含まれる、日付と時刻の操作を実装する関数群です。 [1]これらの関数は、時刻の取得、日付形式の変換、文字列へのフォーマットされた出力をサポートします。
歴史
で使用されるフォーマット文字列は、strftime少なくとも1977年にリリースされたPWB/UNIX 1.0にまで遡ります。そのdateシステムコマンドには、さまざまなフォーマットオプションが含まれています。[2] [3]strftime 1989年には、その他の日付と時刻関数を含むANSI C標準がリリースされました。 [4]
機能の概要
C の日付と時刻の操作は、<time.h> ヘッダー ファイル( C++<ctime>では header ) で定義されています。
| 識別子 | 説明 | |
|---|---|---|
| 時間 操作 | difftime | time_t2つの値の差を秒単位で計算します |
time | システムの現在の時刻time_tを秒数で返します(通常はエポック(典型的にはUnixエポック)からの経過時間です)。エポックの値はオペレーティングシステムに依存し、1900と1970がよく使用されます。RFC 868を参照してください。 | |
clock | プロセスに関連付けられたプロセッサティックカウントを返します。 | |
timespec_get(C11) | 時間ベースに基づいてカレンダー時間を返します | |
| フォーマット 変換 | asctime | struct tmオブジェクトをテキスト表現に変換します(非推奨) |
ctime | time_t値をテキスト表現に変換する | |
strftime | struct tmオブジェクトをカスタムテキスト表現に変換します | |
strptime | 時間情報を含む文字列をstruct tm | |
wcsftime | struct tmオブジェクトをカスタムワイド文字列のテキスト表現に変換します | |
gmtime | 値を協定世界時time_tで表される暦時間に変換する[5] | |
localtime | time_t値を現地時間で表現されたカレンダー時間に変換します | |
mktime | カレンダー時間をtime_t値に変換します。 | |
| 定数 | CLOCKS_PER_SEC | 1秒あたりのプロセッサクロック数 |
TIME_UTC | UTCのタイムベース | |
| 種類 | struct tm | 内訳カレンダーの時間タイプ: 年、月、日、時、分、秒 |
time_t | 算術時刻型(通常はUnixエポックからの時間) | |
clock_t | プロセス実行時間の種類 | |
struct timespec | 秒とナノ秒で表した時間 |
およびtimespec関連型は、もともとさまざまな時間ベースを提供するために Markus Kuhn によって提案されましたが、TIME_UTC受け入れられたのは のみでした。[6]ただし、これらの機能は1998 年のC++20のリリースでC++に追加されました。std::chrono
例
次の C ソース コードは、現在の時刻を標準出力ストリームに出力します。
#include <stdio.h> #include <stdlib.h> #include <time.h> int main ( void ) { time_t現在の時刻; char * c_time_string ; // 現在の時刻を取得します。current_time = time ( NULL ) ; if ( current_time == (( time_t ) -1 )) { fprintf ( stderr , "現在の時刻を取得できませんでした。\n " ); return EXIT_FAILURE ; } //ローカル時刻形式に変換します。c_time_string = ctime ( & current_time ); if ( ! c_time_string ) { fprintf ( stderr , "現在の時刻の変換に失敗しました。\n " ); return EXIT_FAILURE ; } // stdout に出力します。ctime() はすでに終了の改行文字を追加しています。printf ( " Current time is %s" , c_time_string ); return EXIT_SUCCESS ; } 出力は次のようになります。
現在の時刻は2016年9月15日木曜日21時18分23秒です参照
参考文献
- ^ ISO/IEC 9899:1999 仕様(PDF) . p. 351, § 7.32.2.
- ^ 「PWB1日付システムコマンド - マニュアルページ」www.tuhs.org。
- ^ 「PWB1のdate.cソースコード」www.tuhs.org。
- ^ 「米国情報システム規格 - プログラミング言語 - C - 日付と時刻の根拠」www.lysator.liu.se。
- ^ open-std.org - 委員会草案 -- 2005年5月6日 355ページ
- ^ Markus Kuhn. 「ISO C向けの最新API」. cl.cam.ac.uk .