localtime_s、_localtime32_s、_localtime64_slocaltime_s, _localtime32_s, _localtime64_s

Time_t time 値をtm構造体に変換し、ローカルタイムゾーンを修正します。Converts a time_t time value to a tm structure, and corrects for the local time zone. これらは、「Security Features in the CRT」 (CRT のセキュリティ機能) で説明されているように、セキュリティが強化されたバージョンの localtime、_localtime32、_localtime64 です。These are versions of localtime, _localtime32, _localtime64 with security enhancements as described in Security Features in the CRT.

構文Syntax

errno_t localtime_s(
   struct tm* const tmDest,
   time_t const* const sourceTime
);
errno_t _localtime32_s(
   struct tm* tmDest,
   __time32_t const* sourceTime
);
errno_t _localtime64_s(
   struct tm* tmDest,
   __time64_t const* sourceTime
);

パラメーターParameters

tmDesttmDest
目的の情報を格納する時間構造体へのポインター。Pointer to the time structure to be filled in.

sourceTimesourceTime
格納されている時刻へのポインター。Pointer to the stored time.

戻り値Return Value

正常終了した場合は 0。Zero if successful. 障害が発生した場合、戻り値はエラー コードを示します。The return value is an error code if there is a failure. エラー コードは、Errno.h で定義されています。Error codes are defined in Errno.h. これらのエラー一覧については、「errno」を参照してください。For a listing of these errors, see errno.

エラー条件Error Conditions

tmDesttmDest sourceTimesourceTime 戻り値Return value Tmdestの値Value in tmDest 無効なパラメーター ハンドラーを呼び出すInvokes invalid parameter handler
NULLNULL 任意any EINVALEINVAL 変更されないNot modified [はい]Yes
Not NULL (有効なメモリを指す)Not NULL (points to valid memory) NULLNULL EINVALEINVAL すべてのフィールドが -1 に設定されるAll fields set to -1 [はい]Yes
Not NULL (有効なメモリを指す)Not NULL (points to valid memory) 0より小さいか、または _MAX__TIME64_Tを超えています。less than 0 or greater than _MAX__TIME64_T EINVALEINVAL すべてのフィールドが -1 に設定されるAll fields set to -1 いいえNo

最初の 2 つのエラーの場合は、「Parameter Validation」 (パラメーターの検証) に説明されているとおり、無効なパラメーター ハンドラーが呼び出されます。In the case of the first two error conditions, the invalid parameter handler is invoked, as described in Parameter Validation. 実行の継続が許可された場合、これらの関数はerrnoeinvalに設定し、 einvalを返します。If execution is allowed to continue, these functions set errno to EINVAL and return EINVAL.

RemarksRemarks

Localtime_s関数は、 time_t値として格納されている時間を変換し、その結果をtm型の構造体に格納します。The localtime_s function converts a time stored as a time_t value and stores the result in a structure of type tm. Time_t Value sourcetimeは、午前0時 (00:00:00)、1970年1月1日からの経過秒数を表します。The time_t value sourceTime represents the seconds elapsed since midnight (00:00:00), January 1, 1970, UTC. 通常、この値はtime関数から取得されます。This value is usually obtained from the time function.

localtime_sは、ユーザーが最初にグローバル環境変数TZを設定した場合、ローカルタイムゾーンを修正します。localtime_s corrects for the local time zone if the user first sets the global environment variable TZ. TZが設定されている場合、他の3つの環境変数 ((timezone_tzname 、および) も自動的に設定されます。When TZ is set, three other environment variables (_timezone, _daylight, and _tzname) are automatically set as well. TZ変数が設定されていない場合、 Localtime_sは、コントロールパネルの [日付/時刻] アプリケーションで指定されたタイムゾーン情報を使用しようとします。If the TZ variable is not set, localtime_s attempts to use the time zone information specified in the Date/Time application in Control Panel. この情報を取得できない場合、既定では、太平洋タイム ゾーンを表す PST8PDT が使用されます。If this information cannot be obtained, PST8PDT, which signifies the Pacific time zone, is used by default. これらの変数の説明については、_tzset を参照してください。See _tzset for a description of these variables. TZは Microsoft 拡張機能であり、 localtimeの ANSI 標準定義の一部ではありません。TZ is a Microsoft extension and not part of the ANSI standard definition of localtime.

注意

対象の環境は、夏時間が有効かどうかを判断しようとします。The target environment should try to determine whether daylight saving time is in effect.

__time64_t構造体を使用する _localtime64_sでは、23:59:59 年1月18日から3001年1月18日までの日付を表すことができます。一方、 _Localtime32_sは23:59:59 年1月18日までの日付を表します。2038、UTC。_localtime64_s, which uses the __time64_t structure, allows dates to be expressed up through 23:59:59, January 18, 3001, coordinated universal time (UTC), whereas _localtime32_s represents dates through 23:59:59 January 18, 2038, UTC.

localtime_sは、 _localtime64_sに評価されるインライン関数で、 time_t__time64_tに相当します。localtime_s is an inline function which evaluates to _localtime64_s, and time_t is equivalent to __time64_t. 以前の32ビットのtime_tとしてtime_tを解釈するようにコンパイラに強制する必要がある場合は、 _USE_32BIT_TIME_Tを定義できます。If you need to force the compiler to interpret time_t as the old 32-bit time_t, you can define _USE_32BIT_TIME_T. これを行うと、 localtime_s_localtime32_sに評価されます。Doing this will cause localtime_s to evaluate to _localtime32_s. ただし、この方法は推奨されません。2038 年 1 月 18 日以降にアプリケーションがエラーになる可能性があり、また、64 ビット プラットフォームでは使用できないためです。This is not recommended because your application may fail after January 18, 2038, and it is not allowed on 64-bit platforms.

Structure 型tmのフィールドは、次の値を格納します。各値はintです。The fields of the structure type tm store the following values, each of which is an int.

フィールドField 説明Description
tm_sectm_sec 秒後 (0-59)。Seconds after minute (0 - 59).
tm_mintm_min 分後 (0-59)。Minutes after hour (0 - 59).
tm_hourtm_hour 深夜からの時間 (0-23)。Hours since midnight (0 - 23).
tm_mdaytm_mday 月の通算日 (1-31)。Day of month (1 - 31).
tm_montm_mon 月 (0-11;1月 = 0)。Month (0 - 11; January = 0).
tm_yeartm_year 年 (実際の西暦から 1900 を引いた数)Year (current year minus 1900).
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_isdsttm_isdst 夏時間が有効な場合は正の値、夏時間が無効な場合は 0、夏時間かどうか状態が不明な場合は負の値。Positive value if daylight saving time is in effect; 0 if daylight saving time is not in effect; negative value if status of daylight saving time is unknown.

TZ環境変数が設定されている場合、C ランタイムライブラリは、夏時間 (DST) の計算を実装するために、米国に適した規則を前提としています。If the TZ environment variable is set, the C run-time library assumes rules appropriate to the United States for implementing the calculation of daylight saving time (DST).

必要条件Requirements

ルーチンRoutine 必須の C ヘッダーRequired C header 必須の C++ ヘッダーRequired C++ header
localtime_s_localtime32_s_localtime64_slocaltime_s, _localtime32_s, _localtime64_s <time.h><time.h> <ctime > また<は time .h ><ctime> or <time.h>

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

Example

// crt_localtime_s.c
// This program uses _time64 to get the current time
// and then uses _localtime64_s() to convert this time to a structure
// representing the local time. The program converts the result
// from a 24-hour clock to a 12-hour clock and determines the
// proper extension (AM or PM).

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

int main( void )
{
    struct tm newtime;
    char am_pm[] = "AM";
    __time64_t long_time;
    char timebuf[26];
    errno_t err;

    // Get time as 64-bit integer.
    _time64( &long_time );
    // Convert to local time.
    err = _localtime64_s( &newtime, &long_time );
    if (err)
    {
        printf("Invalid argument to _localtime64_s.");
        exit(1);
    }
    if( newtime.tm_hour > 12 )        // Set up extension.
        strcpy_s( am_pm, sizeof(am_pm), "PM" );
    if( newtime.tm_hour > 12 )        // Convert from 24-hour
        newtime.tm_hour -= 12;        // to 12-hour clock.
    if( newtime.tm_hour == 0 )        // Set hour to 12 if midnight.
        newtime.tm_hour = 12;

    // Convert to an ASCII representation.
    err = asctime_s(timebuf, 26, &newtime);
    if (err)
    {
        printf("Invalid argument to asctime_s.");
        exit(1);
    }
    printf( "%.19s %s\n", timebuf, am_pm );
}
Fri Apr 25 01:19:27 PM

関連項目See also

時間管理Time Management
asctime_s、_wasctime_sasctime_s, _wasctime_s
ctime、_ctime32、_ctime64、_wctime、_wctime32、_wctime64ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64
_ftime、_ftime32、_ftime64_ftime, _ftime32, _ftime64
gmtime_s、_gmtime32_s、_gmtime64_sgmtime_s, _gmtime32_s, _gmtime64_s
localtime、_localtime32、_localtime64localtime, _localtime32, _localtime64
time、_time32、_time64time, _time32, _time64
_tzset_tzset