asctime_s、_wasctime_sasctime_s, _wasctime_s

変換をtm時間を文字の文字列の構造。Convert a tm time structure to a character string. これらの関数は、「CRT のセキュリティ機能」の説明にあるとおり、asctime、_wasctime のセキュリティが強化されたバージョンです。These functions are versions of asctime, _wasctime with security enhancements as described in Security Features in the CRT.


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


結果の文字列を格納するバッファーへのポインター。A pointer to a buffer to store the character string result. この関数で指定したサイズと有効なメモリ位置へのポインターを前提としていますnumberOfElementsします。This function assumes a pointer to a valid memory location with a size specified by numberOfElements.

結果を格納するために使用するバッファーのサイズ。The size of the buffer used to store the result.

時刻/日付の構造体。Time/date structure. この関数が有効なへのポインターを前提としています構造体 tmオブジェクト。This function assumes a pointer to a valid struct tm object.

戻り値Return Value

正常終了した場合は 0。Zero if successful. 障害が発生した場合は、「パラメーターの検証」で説明されているとおり、無効なパラメーター ハンドラーが呼び出されます。If there is a failure, the invalid parameter handler is invoked, as described in Parameter Validation. 実行の継続が許可された場合、戻り値はエラー コードになります。If execution is allowed to continue, the return value is an error code. エラー コードは、ERRNO.H で定義されています。Error codes are defined in ERRNO.H. 詳細については、「errno 定数」を参照してください。For more information, see errno Constants. 各エラー条件に対して返される実際のエラー コードを、次の表に示します。The actual error codes returned for each error condition are shown in the following table.

エラー条件Error Conditions

バッファーbuffer numberOfElementsnumberOfElements tmSourcetmSource ReturnReturn バッファーValue in buffer
NULLNULL どれでも可Any どれでも可Any EINVALEINVAL 変更されないNot modified
いないNULL (有効なメモリを指す)Not NULL (points to valid memory) 00 どれでも可Any EINVALEINVAL 変更されないNot modified
いないNULLNot NULL 0< サイズ < 260< size < 26 どれでも可Any EINVALEINVAL 空の文字列Empty string
いないNULLNot NULL >= 26>= 26 NULLNULL EINVALEINVAL 空の文字列Empty string
いないNULLNot NULL >= 26>= 26 無効な時間構造体または時間のコンポーネントの値が範囲外Invalid time structure or out of range values for components of the time EINVALEINVAL 空の文字列Empty string


エラー状態をwasctime_sのようなasctime_sの言葉で、サイズの上限を測定する例外を使用します。Error conditions for wasctime_s are similar to asctime_s with the exception that the size limit is measured in words.


Asctime関数が文字の文字列を構造体として格納されている時間に変換します。The asctime function converts a time stored as a structure to a character string. TmSourceへの呼び出しから値が取得通常gmtimeまたはlocaltimeします。The tmSource value is usually obtained from a call to gmtime or localtime. どちらの関数を埋めるために使用できます、 tm時間で定義されている構造体します。H.Both functions can be used to fill in a tm structure, as defined in TIME.H.

timeptr メンバーtimeptr member [値]Value
tm_hourtm_hour 時間午前 0 時 (0 ~ 23) 以降Hours since midnight (0-23)
tm_isdsttm_isdst 夏時間が有効な場合は正、夏時間が無効な場合は 0、夏時間かどうかが不明な場合は負。Positive if daylight saving time is in effect; 0 if daylight saving time is not in effect; negative if status of daylight saving time is unknown. C ランタイム ライブラリでは、アメリカ合衆国の規則を前提に夏時間 (DST) を計算します。The C run-time library assumes the United States' rules for implementing the calculation of Daylight Saving Time (DST).
tm_mdaytm_mday (1 ~ 31) の月の日Day of month (1-31)
tm_mintm_min 分 (0 ~ 59)Minutes after hour (0-59)
tm_montm_mon 月 (0 ~ 11。年 1 月 = 0 です)Month (0-11; January = 0)
tm_sectm_sec 秒 (0 ~ 59)Seconds after minute (0-59)
tm_wdaytm_wday 曜日 (0 ~ 6 です。日曜日 = 0)Day of week (0-6; Sunday = 0)
tm_ydaytm_yday (0-365; 年の通算日1 月 1 日 = 0)Day of year (0-365; January 1 = 0)
tm_yeartm_year 年 (実際の西暦から 1900 を引いた数)Year (current year minus 1900)

変換された文字列も、ローカル タイム ゾーンの設定に従って調整されます。The converted character string is also adjusted according to the local time zone settings. ローカル タイムの設定の詳細については、time、_time32、_time64_ftime、_ftime32、_ftime64、および localtime_s、_localtime32_s、_localtime64_s の関数を参照してください。また、タイム ゾーン環境とグローバル変数の定義の詳細については、_tzset 関数を参照してください。See the time, _time32, _time64, _ftime, _ftime32, _ftime64, and localtime_s, _localtime32_s, _localtime64_s functions for information about configuring the local time and the _tzset function for information about defining the time zone environment and global variables.

によって生成される文字列asctime_sには、26 文字が含まれていて、フォームWed Jan 02 02:03:55 1980\n\0します。The string result produced by asctime_s contains exactly 26 characters and has the form Wed Jan 02 02:03:55 1980\n\0. 24 時間制が使用されます。A 24-hour clock is used. すべてのフィールドには一定の幅があります。All fields have a constant width. 文字列の最後の 2 つの位置には、改行文字と null 文字が入ります。The new line character and the null character occupy the last two positions of the string. 2 番目のパラメーターとして渡される値は、この大きさ以上にする必要があります。The value passed in as the second parameter should be at least this big. エラー コードでは、以下である場合EINVALが返されます。If it is less, an error code, EINVAL, will be returned.

_wasctime_sのワイド文字バージョンは、 asctime_sします。_wasctime_s is a wide-character version of asctime_s. _wasctime_sasctime_s動作は同じです。_wasctime_s and asctime_s behave identically otherwise.

汎用テキスト ルーチンのマップGeneric-Text Routine Mapping

TCHAR.H のルーチンTCHAR.H routine _UNICODE および _MBCS が未定義の場合_UNICODE & _MBCS not defined _MBCS が定義されている場合_MBCS defined _UNICODE が定義されている場合_UNICODE defined
_tasctime_s_tasctime_s asctime_sasctime_s asctime_sasctime_s _wasctime_s_wasctime_s

C++ では、テンプレートのオーバーロードによってこれらの関数を簡単に使用できます。オーバーロードでは、バッファー長を自動的に推論できるため、サイズ引数を指定する必要がなくなります。In C++, using these functions is simplified by template overloads; the overloads can infer buffer length automatically, eliminating the need to specify a size argument. 詳細については、「 Secure Template Overloads」を参照してください。For more information, see Secure Template Overloads.


ルーチンによって返される値Routine 必須ヘッダーRequired header
asctime_sasctime_s <time.h><time.h>
_wasctime_s_wasctime_s <time.h> または <wchar.h><time.h> or <wchar.h>


バッファー ポインターがない場合NULLと、ポインターが有効なバッファーを指していない、関数は、任意の場所から上書きされます。If the buffer pointer is not NULL and the pointer does not point to a valid buffer, the function will overwrite whatever is at the location. これによりアクセス違反が発生することもあります。This can also result in an access violation.

渡されるサイズ引数がバッファーの実際のサイズより大きい場合、バッファー オーバーランが発生する場合があります。A buffer overrun can occur if the size argument passed in is greater than the actual size of the buffer.


このプログラムは長整数型のシステム時刻を配置時計、構造体に変換しますnewtimeに変換用の文字列形式を使用して出力して、 asctime_s関数。This program places the system time in the long integer aclock, translates it into the structure newtime and then converts it to string form for output, using the asctime_s function.

// 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;
Current date and time: Wed May 14 15:30:17 2003

関連項目See also

時間管理Time Management
ctime_s、_ctime32_s、_ctime64_s、_wctime_s、_wctime32_s、_wctime64_sctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s
_ftime、_ftime32、_ftime64_ftime, _ftime32, _ftime64
gmtime_s、_gmtime32_s、_gmtime64_sgmtime_s, _gmtime32_s, _gmtime64_s
localtime_s、_localtime32_s、_localtime64_slocaltime_s, _localtime32_s, _localtime64_s
time、_time32、_time64time, _time32, _time64