名前空間
変種
操作

ctime, ctime_s

From cppreference.com
< c‎ | chrono
ヘッダー <time.h> で定義
(1)
char*                ctime( const time_t* timer );
(C23まで)
[[deprecated]] char* ctime( const time_t* timer );
(C23以降)
errno_t ctime_s( char *buf, rsize_t bufsz, const time_t* timer );
(2) (C11 以降)
1) 指定されたエポックからの時間をカレンダーの現地時間に変換し、さらにテキスト表現に変換します。asctime(localtime(timer)) を呼び出したかのように、 または asctime(localtime_r(timer, &(struct tm){0}))(C23以降)この関数は非推奨であり、新しいコードでは使用すべきではありません。(C23以降)
2) (1) と同様ですが、この関数は asctime_s(buf, bufsz, localtime_s(timer, &(struct tm){0})) と同等であり、以下のエラーが実行時に検出され、現在インストールされている 制約ハンドラ関数を呼び出します。
  • buf または timer がヌルポインタである
  • bufsz26 より小さいか、RSIZE_MAX より大きい
すべての境界チェック付き関数と同様に、ctime_s は、実装によって __STDC_LIB_EXT1__ が定義され、ユーザーが <time.h> をインクルードする前に __STDC_WANT_LIB_EXT1__ を整数定数 1 に定義している場合にのみ利用可能です。

結果の文字列は次の形式を持ちます。

Www Mmm dd hh:mm:ss yyyy\n
  • Www - 曜日 (Mon, Tue, Wed, Thu, Fri, Sat, Sun のいずれか)。
  • Mmm - 月 (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec のいずれか)。
  • dd - 月の日
  • hh - 時間
  • mm - 分
  • ss - 秒
  • yyyy - 年

この関数はローカライズをサポートしていません。

目次

[編集] パラメータ

timer - 表示する時刻を指定する time_t オブジェクトへのポインタ
buf - 少なくとも bufsz サイズの char 配列の最初の要素へのポインタ
bufsz - 出力する最大バイト数、通常は buf が指すバッファのサイズ

[編集] 戻り値

1) 日付と時刻のテキスト表現を保持する静的なヌル終端文字文字列へのポインタ。asctimectime の間で文字列が共有される可能性があり、これらの関数のいずれかを呼び出すたびに上書きされる可能性があります。
2) 成功した場合はゼロ (この場合、時刻の文字列表現は buf が指す配列に書き込まれます)、失敗した場合は非ゼロ (この場合、buf がヌルポインタであるか、bufsz がゼロまたは RSIZE_MAX より大きい場合を除き、終端のヌル文字は常に buf[0] に書き込まれます)。

[編集] 注釈

ctime は静的データへのポインタを返し、スレッドセーフではありません。さらに、gmtime および localtime と共有される可能性のある静的な tm オブジェクトを変更します。POSIX はこの関数を廃止予定とし、代わりに strftime を推奨しています。C 標準も、strftime がより柔軟でロケール対応であるため、ctime および ctime_s の代わりに strftime を推奨しています。

time_t の値が 25 文字より長い文字列 (例: 10000 年) になる場合、ctime の動作は未定義です。

[編集]

#define __STDC_WANT_LIB_EXT1__ 1
#include <time.h>
#include <stdio.h>
 
int main(void)
{
    time_t result = time(NULL);
    printf("%s", ctime(&result));
 
#ifdef __STDC_LIB_EXT1__
    char str[26];
    ctime_s(str,sizeof str,&result);
    printf("%s", str);
#endif
}

実行結果の例

Tue May 26 21:51:03 2015
Tue May 26 21:51:03 2015

[編集] 参考文献

  • C17標準 (ISO/IEC 9899:2018)
  • 7.27.3.2 The ctime function (p: 287-288)
  • K.3.8.2.2 The ctime_s function (p: 454)
  • C11標準 (ISO/IEC 9899:2011)
  • 7.27.3.2 The ctime function (p: 393)
  • K.3.8.2.2 The ctime_s function (p: 626)
  • C99標準 (ISO/IEC 9899:1999)
  • 7.23.3.2 The ctime function (p: 342)
  • C89/C90標準 (ISO/IEC 9899:1990)
  • 4.12.3.2 The ctime function

[編集] 関連項目

(C23で非推奨)(C11)
tm オブジェクトをテキスト表現に変換する
(関数) [編集]
tm オブジェクトをカスタムのテキスト表現に変換する
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)