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.

構文Syntax

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

パラメーターParameters

バッファーbuffer
文字列の結果を格納するバッファーへのポインター。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.

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

tmSourcetmSource
時刻/日付の構造体。Time/date structure. この関数は、有効なstruct 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
Not NULL (有効なメモリを指す)Not NULL (points to valid memory) 00 任意Any EINVALEINVAL 変更されないNot modified
NULL以外Not NULL 0< サイズ < 260< size < 26 任意Any EINVALEINVAL 空の文字列Empty string
NULL以外Not NULL >= 26>= 26 NULLNULL EINVALEINVAL 空の文字列Empty string
NULL以外Not 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.

RemarksRemarks

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. これらの関数を使用すると、TIME で定義されているように、 tm構造体を入力できます。始め.Both functions can be used to fill in a tm structure, as defined in TIME.H.

timeptr メンバーtimeptr member Value
tm_hourtm_hour 深夜からの時間 (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.

必要条件Requirements

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

セキュリティSecurity

バッファーポインターが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.

Example

このプログラムは、システム時刻を長整数のaclockに配置し、それを構造体の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
_tzset_tzset