_strtime_s, _wstrtime_s

現在の時刻をバッファーにコピーします。 これらの関数は、CRT_strtime_wstrtimeセキュリティ機能の説明に従ってセキュリティが強化されたバージョンの関数です。

構文

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

パラメーター

buffer
バッファーの長さは少なくとも 10 バイトで、時刻が書き込まれます。

numberOfElements
バッファーのサイズ。

戻り値

正常終了した場合は 0。

エラー条件が発生した場合、「パラメーターの検証」で説明されているように、無効なパラメーター ハンドラーが呼び出されます。 エラーが発生した場合、戻り値はエラー コードです。 エラー コードは ERRNO.H で定義されます。この関数によって生成される正確なエラーについては、下記の表をご覧ください。 エラー コードの詳細については、定数を参照してください。errno

エラー条件

buffer numberOfElements Return buffer の内容
NULL (任意) EINVAL Not modified
NULL ではない (有効なバッファーを指す) 0 EINVAL Not modified
NULL ではない (有効なバッファーを指す) 0 < サイズ < 9 EINVAL 空の文字列
NULL ではない (有効なバッファーを指す) サイズ > 9 0 コメントで指定されている書式設定の、現在の時刻

セキュリティ上の問題

バッファーに無効な非NULL 値を渡すと、パラメーターが 9 より大きい場合 numberOfElements 、アクセス違反が発生します。

バッファーの実際のサイズより大きい numberOfElements の値を渡すと、バッファー オーバーランが発生します。

解説

これらの関数には、セキュリティを強化したバージョンとして _strtime および _wstrtime があります。 この関数は _strtime_s 、現在のローカル時刻を指すバッファーにコピーします buffer。 時刻は hh:mm:ss として書式設定されます。ここでhh、24 時間表記で時間を表す 2 桁の数字、 mm 1 時間を過ぎた分を表す 2 桁、ss秒を表す 2 桁の数字です。 たとえば、文字列 18:23:44 は、午後 6 時から 23 分 44 秒後を表します。バッファーの長さは 9 バイト以上である必要があります。実際のサイズは、2 番目のパラメーターで指定されます。

ワイド文字を扱う場合は、_wstrtime_s ではなく _strtime_s を使用します。_wstrtime_s の場合、引数にはワイド文字列を指定します。また戻り値もワイド文字列です。 それ以外では、これらの関数の動作は同じです。

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

これらの関数のデバッグ ライブラリ バージョンでは、最初にバッファーを 0xFE で埋めます。 この動作を無効にするには、_CrtSetDebugFillThreshold を使用します。

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT のグローバル状態」を参照してください

汎用テキスト ルーチン マッピング

TCHAR.H のルーチン _UNICODE_MBCS が定義されていない _MBCS が定義されている _UNICODE が定義されている
_tstrtime_s _strtime_s _strtime_s _wstrtime_s

必要条件

ルーチンによって返される値 必須ヘッダー
_strtime_s <time.h>
_wstrtime_s <time.h> または <wchar.h>

互換性の詳細については、「 Compatibility」を参照してください。

// 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

関連項目

時間管理
asctime_s, _wasctime_s
ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s
gmtime_s, _gmtime32_s, _gmtime64_s
localtime_s, _localtime32_s, _localtime64_s
mktime, _mktime32, _mktime64
time, _time32, _time64
_tzset