asctime_s、_wasctime_s

文字列に tm 時刻の構造体に変換します。これらの関数は CRT のセキュリティ機能 に説明されているようにのセキュリティが強化された asctime、_wasctime のバージョンです。

errno_t asctime_s( 
   char* buffer,
   size_t numberOfElements,
   const struct tm *_tm 
);
errno_t _wasctime_s( 
   wchar_t* buffer,
   size_t numberOfElements
   const struct tm *_tm 
);
template <size_t size>
errno_t asctime_s( 
   char (&buffer)[size],
   const struct tm *_tm 
); // C++ only
template <size_t size>
errno_t _wasctime_s( 
   wchar_t (&buffer)[size],
   const struct tm *_tm 
); // C++ only

パラメーター

  • buffer
    [入力] 文字列の結果を格納するバッファーへのポインター。この関数は numberOfElements で指定したサイズの有効なメモリ位置へのポインターを前提としています。

  • numberOfElements
    [入力] 結果を格納するために使用されるバッファーのサイズ。

  • _tm
    [入力] 時間と日付の構造体。この関数は struct 有効な tm のオブジェクトへのポインターを前提としています。

戻り値

正常に終了した場合は 0 を返します。失敗した場合無効なパラメーター ハンドラーが パラメーターの検証 に説明されているように開始されます。実行の継続が許可された場合戻り値はエラー コードです。エラー コードは ERRNO.H. で定義されます。詳細については、「errno 定数」を参照してください。各エラー条件に対して返される実際のエラー コードは次の表に示します。

エラー条件

buffer

numberOfElements

tm

戻り値

buffer の値

NULL

どれでも可

どれでも可

EINVAL

変更されない

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

0

どれでも可

EINVAL

変更されない

NULL 以外

0 < サイズ < 26

どれでも可

EINVAL

空の文字列

NULL 以外

26 以上

NULL

EINVAL

空の文字列

NULL 以外

26 以上

時刻コンポーネントの範囲の値から無効な時刻の構造体または

EINVAL

空の文字列

[!メモ]

wasctime_s のエラー条件 asctime_s にはと似ていますがサイズ制限は単語単位です。

解説

asctime の関数は文字列を構造体として格納されている時刻を変換します。_tm の値は通常呼び出しから gmtime または localtime に取得されます。関数が両方とも TIME.H. で定義されている tm の構造を入力することもできます。

timeptr のメンバー

tm_hour

0-23 深夜) からの時間

tm_isdst

夏時間が有効な場合は正 ; 夏時間が無効な場合は 0; 夏時間かどうかが不明な場合は負。C ランタイム ライブラリで夏時間の計算を実行するための米国の規則を (DST) 前提としています。

tm_mday

月 (1-3) の日

tm_min

時間 (分) の後 0-59

tm_mon

月 (; 0-11 1 年 1 月 = 0)

tm_sec

分 (0-59 後の秒)

tm_wday

曜日 (; 0-6 の日 日曜日 = 0)

tm_yday

年 (; 0-365 の日 1 年 1 月 1 日 = 0)

tm_year

年 (1900 を引いた数の年)

変換された文字列は、現地のタイム ゾーンの設定に合わせて調整されます。タイム ゾーンの環境変数とグローバル変数の定義についての現地時刻と _tzset の関数の設定方法についてはtime、_time32、_time64_ftime、_ftime32、_ftime64localtime_s、_localtime32_s、_localtime64_s の関数を参照してください。

asctime_s で生成される結果の文字列が 26 文字を一つ含むフォーム Wed Jan 02 02:03:55 1980\n\0 があります。時刻は 24 時間制です。すべてのフィールドは固定幅です。改行文字および null 文字は文字列の最後の 2 か所に格納されます。2 番目のパラメーターとして渡される値は少なくともその必要があります。これは未満の場合エラー コードの他EINVAL はを返します。

_wasctime_sasctime_s はのワイド文字バージョンです。それ以外では、_wasctime_sasctime_s の動作は同じです。

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

TCHAR.H のルーチン

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

_MBCS が定義されている場合

_UNICODE が定義されている場合

_tasctime_s

asctime_s

asctime_s

_wasctime_s

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

必要条件

ルーチン

必須ヘッダー

asctime_s

<time.h>

_wasctime_s

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

セキュリティ

バッファーのポインターが NULL ではなくポインターが有効なバッファーを指し示してする関数は内容が場所に上書きされます。これはアクセス違反が発生する可能性があります。

バッファー オーバーラン にサイズ引数がバッファーの実際のサイズよりも大きい場合に発生します。

使用例

次にこのプログラムは asctime_s の関数を使用して出力の構造に newtime 長整数 aclock移動および文字列への変換にはシステム時刻を格納します。

// crt_asctime_s.c
#include <time.h>
#include <stdio.h>

struct tm newtime;
__time32_t aclock;

int main( void )
{
   char buffer[32];
   errno_t errNum;
   _time32( &aclock );   // Get time in seconds.
   _localtime32_s( &newtime, &aclock );   // Convert time to struct tm form.

   // Print local time as a string.

   errNum = asctime_s(buffer, 32, &newtime);
   if (errNum)
   {
       printf("Error code: %d", (int)errNum);
       return 1;
   }
   printf( "Current date and time: %s", buffer );
   return 0;
}
  

同等の .NET Framework 関数

参照

関連項目

時間管理

ctime_s、_ctime32_s、_ctime64_s、_wctime_s、_wctime32_s、_wctime64_s

_ftime、_ftime32、_ftime64

gmtime_s、_gmtime32_s、_gmtime64_s

localtime_s、_localtime32_s、_localtime64_s

time、_time32、_time64

_tzset