次の方法で共有


_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 以外の値を渡すと、 numberOfElements パラメーターが 9 より大きい場合、アクセス違反が発生します。

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

解説

これらの関数には、セキュリティを強化したバージョンとして _strtime および _wstrtime があります。 _strtime_s関数は、現在のローカル時刻を、bufferが指すバッファーにコピーします。 時刻は h: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