localtime, localtime_r, localtime_s
|
ヘッダーで定義
<time.h>
|
||
| (1) | ||
| (2) | (C23以降) | |
| (3) | (C11以降) | |
struct tm
形式で表現します。結果は静的ストレージに格納され、その静的ストレージへのポインタが返されます。
-
- timer または buf がnullポインタである場合
-
すべての境界チェック付き関数と同様に、
localtime_sは、実装によって __STDC_LIB_EXT1__ が定義されており、かつユーザーが <time.h> をインクルードする前に __STDC_WANT_LIB_EXT1__ を整数定数 1 に定義している場合にのみ利用可能であることが保証されます。
目次 |
パラメータ
| timer | - | time_t オブジェクトへのポインタ(変換対象) |
| buf | - | 結果を格納する struct tm オブジェクトへのポインタ |
戻り値
localtime
、および
ctime
間で共有される可能性があり、各呼び出し時に上書きされる可能性があります。
注記
関数
localtime
はスレッドセーフではない可能性があります。
Microsoft CRT
の実装はスレッドセーフです。
POSIXでは、
localtime
および
localtime_r
が引数が大きすぎるために失敗した場合、
errno
を
EOVERFLOW
に設定することを要求しています。
POSIXは
タイムゾーン情報が
localtime
および
localtime_r
によって決定されると規定しており、これは
tzset
を呼び出すかのように動作し、環境変数
TZ
を読み取ります。
Microsoft CRT
における
localtime_s
の実装は、パラメータの順序が逆であり、
errno_t
を返すため、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.4 localtime関数 (p: TBD)
-
- K.3.8.2.4 localtime_s関数 (p: TBD)
- C17規格 (ISO/IEC 9899:2018):
-
- 7.27.3.4 localtime関数 (p: 288)
-
- K.3.8.2.4 localtime_s関数 (p: 455)
- C11規格 (ISO/IEC 9899:2011):
-
- 7.27.3.4 localtime関数 (p: 394)
-
- K.3.8.2.4 localtime_s関数 (p: 627)
- C99規格 (ISO/IEC 9899:1999):
-
- 7.23.3.4 localtime関数 (p: 343)
- C89/C90標準 (ISO/IEC 9899:1990):
-
- 4.12.3.4 localtime関数
関連項目
|
(C23)
(C11)
|
エポックからの経過時間を協定世界時(UTC)で表した暦時刻に変換する
(関数) |
|
C++ドキュメント
for
localtime
|
|