Share via


ctime_s、_ctime32_s、_ctime64_s、_wctime_s、_wctime32_s、_wctime64_s

更新 : 2007 年 11 月

時間値を文字列に変換し、現地のタイム ゾーンの設定に調整します。これらの関数は、「CRT のセキュリティ強化」に説明されているように、ctime、_ctime64、_wctime、_wctime64 のセキュリティが強化されたバージョンです。

errno_t ctime_s( 
   char* buffer,
   size_t numberOfElements,
   const time_t *time 
);
errno_t _ctime32_s( 
   char* buffer,
   size_t numberOfElements,
   const __time32_t *time 
);
errno_t _ctime64_s( 
   char* buffer,
   size_t numberOfElements,
   const __time64_t *time )
;
errno_t _wctime_s( 
   wchar_t* buffer,
   size_t numberOfElements,
   const time_t *time 
);
errno_t _wctime32_s( 
   wchar_t* buffer,
   size_t numberOfElements,
   const __time32_t *time 
);
errno_t _wctime64_s( 
   wchar_t* buffer,
   size_t numberOfElements,
   const __time64_t *time 
);
template <size_t size>
errno_t _ctime32_s( 
   char (&buffer)[size],
   const __time32_t *time 
); // C++ only
template <size_t size>
errno_t _ctime64_s( 
   char (&buffer)[size],
   const __time64_t *time
); // C++ only
template <size_t size>
errno_t _wctime32_s( 
   wchar_t (&buffer)[size],
   const __time32_t *time 
); // C++ only
template <size_t size>
errno_t _wctime64_s( 
   wchar_t (&buffer)[size],
   const __time64_t *time 
); // C++ only

パラメータ

  • [出力] buffer
    26 文字を保持するのに十分な大きさである必要があります。結果の文字列へのポインタを返します。次の場合は、NULL を返します。

    • time が 1970 年 1 月 1 日の世界協定時刻 (UTC: Coordinated Universal Time) の深夜午前 0 時よりも前の日付を示している場合

    • _ctime32_s または _wctime32_s を使用していて、time が 2038 年 1 月 19 日の 03 時 14 分 07 秒よりも後の日付を示している場合

    • _ctime64_s または _wctime64_s を使用していて、time が 3000 年 12 月 31 日の UTC の 23 時 59 分 59 秒よりも後の日付を示している場合

    • _ctime_s または _wctime_s を使用していて、これらの関数が前の関数のラッパーである場合。「解説」を参照してください。

  • [入力] numberOfElements
    バッファのサイズ。

  • [入力] ime
    格納されている時刻へのポインタ。

戻り値

正常に終了した場合は 0 を返します。無効なパラメータによるエラーが発生した場合は、「パラメータの検証」に説明されているように、無効なパラメータ ハンドラが呼び出されます。実行の継続が許可された場合、エラー コードが返されます。エラー コードは、ERRNO.H で定義されています。これらのエラーの一覧については、「errno 定数」を参照してください。次の表に、各エラー条件に対してスローされる実際のエラー コードを次の表に示します。

エラー条件

buffer

numberOfElements

time

Return

buffer の値

NULL

any

any

EINVAL

変更されない

NULL 以外 (有効なメモリを指し示している)

0

any

EINVAL

変更されない

NULL 以外

0 < サイズ < 26

any

EINVAL

空の文字列

NULL 以外

>= 26

NULL

EINVAL

空の文字列

NULL 以外

>= 26

< 0

EINVAL

空の文字列

解説

ctime_s 関数は、time_t 構造体として格納された時間値を文字列に変換します。time 値を取得するには、通常、time を呼び出します。世界協定時刻 (UTC) の 1970 年 1 月 1 日の深夜 00 時 00 分 00 秒からの経過秒数が返されます。戻り値は、26 文字からなる、次のような書式の文字列です。

Wed Jan 02 02:03:55 1980\n\0

時刻は 24 時間制です。すべてのフィールドは固定幅です。文字列の終端には、改行文字 ('\n') および null 文字 ('\0') が入ります。

変換された文字列は、現地のタイム ゾーンの設定に合わせて調整されます。現地時刻の設定方法については、time、_ftime、および localtime の各関数に関するトピックを参照してください。タイム ゾーンの環境変数とグローバル変数の定義については、_tzset 関数に関するトピックを参照してください。

ワイド文字を扱う場合は、_ctime32_s および _ctime64_s ではなく、_wctime32_s および _wctime64_s を使用します。この場合、ワイド文字列へのポインタを返します。それ以外の場合、_ctime64_s、_wctime32_s、および _wctime64_s の動作は _ctime32_s と同じです。

Visual C++ 2005 では、ctime_s は、_ctime64_s に評価されるインライン関数であり、time_t は __time64_t と等価です。コンパイラが time_t を従来の 32 ビット time_t として解釈するようにするには、_USE_32BIT_TIME_T を定義します。この定義を行うことにより、ctime_sは _ctime32_s に評価されます。この方法はお勧めしません。2038 年 1 月 18 日以降にアプリケーションでエラーが発生する可能性があり、64 ビット プラットフォームでは使用できないためです。

C++ では、これらの関数の使用はテンプレートのオーバーロードによって簡素化されます。オーバーロードでは、バッファ長を自動的に推論できるため、サイズの引数を指定する必要がなくなります。詳細については、「セキュリティ保護されたテンプレート オーバーロード」を参照してください。

汎用テキスト ルーチンのマップ

TCHAR.H のルーチン

_UNICODE および _MBCS が未定義の場合

_MBCS が定義されている場合

_UNICODE が定義されている場合

_tctime_s

ctime_s

ctime_s

_wctime_s

_tctime32_s

_ctime32_s

_ctime32_s

_wctime32_s

_tctime64_s

_ctime64_s

_ctime64_s

_wctime64_s

必要条件

ルーチン

必須ヘッダー

ctime_s,

_ctime32_s,

_ctime64_s

<time.h>

_wctime_s,

_wctime32_s,

_wctime64_s

<time.h> または <wchar.h>

互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。

ライブラリ

C ランタイム ライブラリのすべてのバージョン。

使用例

// crt_wctime_s.c
/* This program gets the current
 * time in time_t form and then uses _wctime_s to
 * display the time in string form.
 */

#include <time.h>
#include <stdio.h>

#define SIZE 26

int main( void )
{
   time_t ltime;
   wchar_t buf[SIZE];
   errno_t err;

   time( &ltime );

  
   err = _wctime_s( buf, SIZE, &ltime );
   if (err != 0)
   {
      printf("Invalid Arguments for _wctime_s. Error Code: %d\n", err);
   }
   wprintf( L"The time is %s\n", buf );
}

出力例

The time is Fri Apr 25 13:03:39 2003

.NET Framework の相当するアイテム

参照

参照

時間管理

asctime_s、_wasctime_s

ctime、_ctime32、_ctime64、_wctime、_wctime32、_wctime64

_ftime、_ftime32、_ftime64

_gmtime_s、_gmtime32_s、_gmtime64_s

localtime_s、_localtime32_s、_localtime64_s

time、_time32、_time64