名前空間
変種
操作

ctime, ctime_s

提供: cppreference.com
< c‎ | chrono
ヘッダ <time.h> で定義
char* ctime( const time_t* time );
(1)
errno_t ctime_s(char *buffer, rsize_t bufsz, const time_t *time);
(2) (C11以上)
1) 指定されたエポックからの時間をカレンダーローカル時刻に変換し、 asctime(localtime(time)) を呼んだかのようにテキスト表現に変換します。
2) (1) と同じですが、この関数は asctime_s(buffer, bufsz, localtime_s(time, &(struct tm){0})) と同等であり、以下のエラーが実行時に検出され、現在設定されている制約ハンドラ関数を呼びます。
  • buffer または time がヌルポインタ。
  • 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 - 年

この関数はローカライゼーションをサポートしません。

目次

[編集] 引数

time - 表示する時刻を指定する time_t オブジェクトを指すポインタ
buffer - 少なくとも bufsz のサイズの文字配列の要素を指すポインタ
bufsz - 出力する最大バイト数、一般的には buffer の指すバッファのサイズ

[編集] 戻り値

1) 日付および時刻のテキスト表現を保持する静的なヌル終端文字列を指すポインタ。 文字列は asctimectime の間で共有されているかもしれず、これらの関数のいずれかの呼び出しのたびに上書きされるかもしれません。
2) 成功した場合はゼロを返し、時刻の文字列表現が buffer の指す配列に書き込まれます。 失敗した場合は非ゼロを返し、 buffer がヌルポインタでなく、 bufsz がゼロでないか RSIZE_MAX より大きくなければ、終端のヌル文字が必ず buffer[0] に書き込まれます。

[編集] ノート

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

25文字より長い文字列を生成する time_t の値 (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

[編集] 参考文献

  • C11 standard (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 standard (ISO/IEC 9899:1999):
  • 7.23.3.2 The ctime function (p: 342)
  • C89/C90 standard (ISO/IEC 9899:1990):
  • 4.12.3.2 The ctime function

[編集] 関連項目

tm オブジェクトをテキスト表現に変換します
(関数) [edit]
tm オブジェクトをカスタムテキスト表現に変換します
(関数) [edit]