localtime、_localtime32、_localtime64localtime, _localtime32, _localtime64

時刻値を変換し、ローカル タイム ゾーンに合わせて修正します。Converts a time value and corrects for the local time zone. これらの関数にはセキュリティを強化したバージョンがあります。localtime_s、_localtime32_s、_localtime64_s を参照してください。More secure versions of these functions are available; see localtime_s, _localtime32_s, _localtime64_s.

構文Syntax

struct tm *localtime( const time_t *sourceTime );
struct tm *_localtime32( const __time32_t *sourceTime );
struct tm *_localtime64( const __time64_t *sourceTime );

パラメーターParameters

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

戻り値Return Value

構造体の結果へのポインターを返すか、関数に渡された日付がの場合はNULLを返します。Return a pointer to the structure result, or NULL if the date passed to the function is:

  • 1970 年 1 月 1 日午前 0 時より前。Before midnight, January 1, 1970.

  • 03:14:07 年1月 2038 19 日、UTC ( _time32およびtime32_tを使用)。After 03:14:07, January 19, 2038, UTC (using _time32 and time32_t).

  • 23:59:59 年12月 31 3000 日の後、 _time64__time64_tを使用します。After 23:59:59, December 31, 3000, UTC (using _time64 and __time64_t).

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

localtimeは、 _localtime64に評価されるインライン関数で、 time_t__time64_tに相当します。localtime is an inline function which evaluates to _localtime64, 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_localtime32に評価されます。Doing this will cause localtime to evaluate to _localtime32. ただし、この方法は推奨されません。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).

RemarksRemarks

Localtime関数は、 time_t値として格納されている時間を変換し、その結果をtm型の構造体に格納します。The localtime function converts a time stored as a time_t value and stores the result in a structure of type tm. Long Value sourcetimeは、午前0時 (00:00:00)、1970年1月1日からの経過秒数を表します。The long 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.

Gmtimemktimemkgmtime、およびlocaltimeの32ビットバージョンと64ビットバージョンの両方で、変換にスレッドごとに1つのtm構造が使用されます。Both the 32-bit and 64-bit versions of gmtime, mktime, mkgmtime, and localtime all use a single tm structure per thread for the conversion. これらのルーチンを呼び出すたびに、前の呼び出しの結果は破棄されます。Each call to one of these routines destroys the result of the previous call.

localtimeは、ユーザーが最初にグローバル環境変数TZを設定した場合、ローカルタイムゾーンを修正します。localtime 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は、コントロールパネルの [日付/時刻] アプリケーションで指定されたタイムゾーン情報を使用しようとします。If the TZ variable is not set, localtime 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.

これらの関数では、パラメーターの検証が行われます。These functions validate their parameters. Sourcetimeが null ポインターの場合、またはsourcetime値が負の場合、「パラメーターの検証」で説明されているように、これらの関数は無効なパラメーターハンドラーを呼び出します。If sourceTime is a null pointer, or if the sourceTime value is negative, these functions invoke an invalid parameter handler, as described in Parameter Validation. 実行の継続が許可された場合、関数はNULLを返し、 errnoEINVALに設定します。If execution is allowed to continue, the functions return NULL and set errno to EINVAL.

必要条件Requirements

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

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

Example

// crt_localtime.cpp
// compile with: /W3
// This program uses _time64 to get the current time
// and then uses localtime64() 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;

    _time64( &long_time );             // Get time as 64-bit integer.
                                       // Convert to local time.
    newtime = _localtime64( &long_time ); // C4996
    // Note: _localtime64 deprecated; consider _localetime64_s

    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;

    char buff[30];
    asctime_s( buff, sizeof(buff), newtime );
    printf( "%.19s %s\n", buff, am_pm );
}
Tue Feb 12 10:05:58 AM

関連項目See also

時間管理Time Management
asctime、_wasctimeasctime, _wasctime
ctime、_ctime32、_ctime64、_wctime、_wctime32、_wctime64ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64
_ftime、_ftime32、_ftime64_ftime, _ftime32, _ftime64
gmtime、_gmtime32、_gmtime64gmtime, _gmtime32, _gmtime64
localtime_s、_localtime32_s、_localtime64_slocaltime_s, _localtime32_s, _localtime64_s
time、_time32、_time64time, _time32, _time64
_tzset_tzset