_strtime_s、_wstrtime_s_strtime_s, _wstrtime_s

現在の時刻をバッファーにコピーします。Copy the current time to a buffer. これらは、「Security Features in the CRT」 (CRT のセキュリティ機能) の説明にあるとおり、セキュリティが強化されたバージョンの _strtime、_wstrtime です。These are versions of _strtime, _wstrtime with security enhancements as described in Security Features in the CRT.

構文Syntax

errno_t _strtime_s(
   char *buffer,
   size_t numberOfElements
);
errno_t _wstrtime_s(
   wchar_t *buffer,
   size_t numberOfElements
);
template <size_t size>
errno_t _strtime_s(
   char (&buffer)[size]
); // C++ only
template <size_t size>
errno_t _wstrtime_s(
   wchar_t (&buffer)[size]
); // C++ only

パラメーターParameters

バッファーbuffer
バッファーの長さは少なくとも 10 バイトで、時刻が書き込まれます。A buffer, at least 10 bytes long, where the time will be written.

numberOfElementsnumberOfElements
バッファーのサイズ。The size of the buffer.

戻り値Return Value

正常終了した場合は 0。Zero if successful.

エラー状況が発生した場合は、「パラメータの検証」に説明されているとおり、無効なパラメーター ハンドラーが呼び出されます。If an error condition occurs, the invalid parameter handler is invoked, as described in Parameter Validation. 障害が発生した場合、戻り値はエラー コードを示します。The return value is an error code if there is a failure. エラー コードは ERRNO.H で定義されます。この関数によって生成される正確なエラーについては、下記の表をご覧ください。Error codes are defined in ERRNO.H; see the following table for the exact errors generated by this function. エラー コードの詳細については、「errno 定数」をご覧ください。For more information on error codes, see errno Constants.

エラー条件Error Conditions

バッファーbuffer numberOfElementsnumberOfElements ReturnReturn 内容バッファーContents of buffer
NULLNULL (任意)(any) EINVALEINVAL 変更されないNot modified
いないNULL (有効なバッファーを指す)Not NULL (pointing to valid buffer) 00 EINVALEINVAL 変更されないNot modified
いないNULL (有効なバッファーを指す)Not NULL (pointing to valid buffer) 0 < サイズ < 90 < size < 9 EINVALEINVAL 空の文字列Empty string
いないNULL (有効なバッファーを指す)Not NULL (pointing to valid buffer) サイズ > 9Size > 9 00 コメントで指定されている書式設定の、現在の時刻Current time formatted as specified in the remarks

セキュリティ上の問題Security Issues

無効なを渡す以外NULL値の場合、バッファーが、アクセス違反になるが、 numberOfElementsパラメーターが 9 よりも大きい。Passing in an invalid non-NULL value for the buffer will result in an access violation if the numberOfElements parameter is greater than 9.

値を渡すnumberOfElementsバッファー オーバーランが発生、バッファーの実際のサイズより大きい。Passing a value for numberOfElements that is greater than the actual size of the buffer will result in buffer overrun.

RemarksRemarks

これらの関数のセキュリティを強化バージョンの提供_strtime_wstrtimeします。These functions provide more secure versions of _strtime and _wstrtime. _Strtime_s関数が指すバッファーに現在の現地時刻をコピーします。The _strtime_s function copies the current local time into the buffer pointed to by timestr. 時間として書式設定hh:mm:ss場所hh 24 時間表記で時間を表す 2 桁の数字は、 mm 、時間、分を表す2桁の数字は、ss秒を表す 2 桁の数字です。The time is formatted as hh:mm:ss where hh is two digits representing the hour in 24-hour notation, mm is two digits representing the minutes past the hour, and ss is two digits representing seconds. たとえば、文字列18時 23分: 44 23 分 44 秒午後 6 時を表しますFor example, the string 18:23:44 represents 23 minutes and 44 seconds past 6 P.M. バッファーは少なくとも 9 バイト長である必要があります。実際のサイズは、2 番目のパラメーターによって指定されます。The buffer must be at least 9 bytes long; the actual size is specified by the second parameter.

_wstrtimeのワイド文字バージョンは、 _strtime; の引数と戻り値 _wstrtimeはワイド文字列です。_wstrtime is a wide-character version of _strtime; the argument and return value of _wstrtime are wide-character strings. それ以外では、これらの関数の動作は同じです。These functions behave identically otherwise.

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) and they can automatically replace older, non-secure functions with their newer, secure counterparts. 詳細については、「 Secure Template Overloads」を参照してください。For more information, see Secure Template Overloads.

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

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

必要条件Requirements

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

互換性の詳細については、「 互換性」を参照してください。For additional compatibility information, see Compatibility.

Example

// strtime_s.c

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

int main()
{
    char tmpbuf[9];
    errno_t err;

    // Set time zone from TZ environment variable. If TZ is not set,
    // the operating system is queried to obtain the default value
    // for the variable.
    //
    _tzset();

    // Display operating system-style date and time.
    err = _strtime_s( tmpbuf, 9 );
    if (err)
    {
       printf("_strdate_s failed due to an invalid argument.");
      exit(1);
    }
    printf( "OS time:\t\t\t\t%s\n", tmpbuf );
    err = _strdate_s( tmpbuf, 9 );
    if (err)
    {
       printf("_strdate_s failed due to an invalid argument.");
       exit(1);
    }
    printf( "OS date:\t\t\t\t%s\n", tmpbuf );

}
OS time:            14:37:49
OS date:            04/25/03

関連項目See also

時間管理Time Management
asctime_s、_wasctime_sasctime_s, _wasctime_s
ctime_s、_ctime32_s、_ctime64_s、_wctime_s、_wctime32_s、_wctime64_sctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s
gmtime_s、_gmtime32_s、_gmtime64_sgmtime_s, _gmtime32_s, _gmtime64_s
localtime_s、_localtime32_s、_localtime64_slocaltime_s, _localtime32_s, _localtime64_s
mktime、_mktime32、_mktime64mktime, _mktime32, _mktime64
time、_time32、_time64time, _time32, _time64
_tzset_tzset