gmtime, gmtime_r, gmtime_s
From cppreference.com
| ヘッダー <time.h> で定義 |
||
| (1) | ||
| (2) | (C23以降) | |
| (3) | (C11 以降) | |
1) 指定されたエポックからの時間 ( timer が指す time_t 値) を、協定世界時 (UTC) で表現された暦時刻に変換し、
struct tm 形式で格納します。結果は静的なストレージに格納され、その静的ストレージへのポインタが返されます。2) (1) と同じですが、関数は結果を格納するためにユーザー提供のストレージ buf を使用します。
3) (1) と同じですが、関数は結果を格納するためにユーザー提供のストレージ buf を使用し、以下のエラーは実行時に検出され、現在インストールされている 制約ハンドラ関数が呼び出されます。
- timer または buf がヌルポインタである。
- すべての境界チェック付き関数と同様に、
gmtime_sは、実装によって __STDC_LIB_EXT1__ が定義され、ユーザーが <time.h> をインクルードする前に __STDC_WANT_LIB_EXT1__ を整数定数 1 として定義した場合にのみ利用可能であることが保証されます。
目次 |
[編集] パラメータ
| timer | - | 変換する time_t オブジェクトへのポインタ。 |
| buf | - | 結果を格納する struct tm オブジェクトへのポインタ。 |
[編集] 戻り値
1) 成功した場合、内部静的 tm オブジェクトへのポインタ。それ以外の場合はヌルポインタ。この構造体は、
gmtime、localtime、および ctime 間で共有される可能性があり、各呼び出しで上書きされる可能性があります。2,3)
buf ポインタのコピー。エラーの場合 (実行時制約違反または指定された時間をUTCに変換できなかった場合) はヌルポインタ。[編集] 注釈
gmtime はスレッドセーフではない場合があります。
POSIX では、引数が大きすぎて失敗した場合、gmtime および gmtime_r は errno を EOVERFLOW に設定することが要求されています。
Microsoft CRT の gmtime_s の実装は、パラメータの順序が逆になっているため、C 標準と互換性がありません。
[編集] 例
このコードを実行
#define __STDC_WANT_LIB_EXT1__ 1 #define _XOPEN_SOURCE // for putenv #include <stdio.h> #include <stdlib.h> // for putenv #include <time.h> int main(void) { time_t t = time(NULL); printf("UTC: %s", asctime(gmtime(&t))); printf("local: %s", asctime(localtime(&t))); // POSIX-specific putenv("TZ=Asia/Singapore"); printf("Singapore: %s", asctime(localtime(&t))); #ifdef __STDC_LIB_EXT1__ struct tm buf; char str[26]; asctime_s(str, sizeof str, gmtime_s(&t, &buf)); printf("UTC: %s", str); asctime_s(str, sizeof str, localtime_s(&t, &buf)); printf("local: %s", str); #endif }
実行結果の例
UTC: Fri Sep 15 14:22:05 2017 local: Fri Sep 15 14:22:05 2017 Singapore: Fri Sep 15 22:22:05 2017 UTC: Fri Sep 15 14:22:05 2017 local: Fri Sep 15 14:22:05 2017
[編集] 参考文献
- C23標準 (ISO/IEC 9899:2024)
- 7.27.3.3 The gmtime function (p: TBD)
- K.3.8.2.3 The gmtime_s function (p: TBD)
- C17標準 (ISO/IEC 9899:2018)
- 7.27.3.3 The gmtime function (p: 288)
- K.3.8.2.3 The gmtime_s function (p: 454-455)
- C11標準 (ISO/IEC 9899:2011)
- 7.27.3.3 The gmtime function (p: 393-394)
- K.3.8.2.3 The gmtime_s function (p: 626-627)
- C99標準 (ISO/IEC 9899:1999)
- 7.23.3.3 The gmtime function (p: 343)
- C89/C90標準 (ISO/IEC 9899:1990)
- 4.12.3.3 The gmtime function
[編集] 関連項目
| (C23)(C11) |
エポックからの時間を、地方時で表されるカレンダー時間に変換する (関数) |
| C++ ドキュメント (gmtime)
| |