次の方法で共有


localtime_s、_localtime32_s、_localtime64_s

時刻の値を変換し、現地のタイム ゾーンを変更します。 これらは CRT のセキュリティ機能"に説明されているように、セキュリティが強化された localtime、_localtime32、_localtime64 のバージョンです。

errno_t localtime_s(
   struct tm* _tm,
   const time_t *time 
);
errno_t _localtime32_s(
   struct tm* _tm,
   const time32_t *time 
);
errno_t _localtime64_s(
   struct tm* _tm,
   const _time64_t *time 
);

パラメーター

  • _tm
    入力する時刻構造体へのポインター。

  • time
    格納されている時刻へのポインター。

戻り値

正常に終了した場合は 0 を返します。 エラーが発生した場合の戻り値はエラー コードです。 エラー コードは、Errno.h で定義されます。 これらのエラーのリスティングの場合、errnoを参照してください。

エラー条件

_tm

time

戻り値

_tm の値

無効なパラメーター ハンドラーを呼び出します。

NULL

任意

EINVAL

変更されない

Yes

NULL 以外 (有効なメモリを指し示している)

NULL

EINVAL

-1 に設定されているすべてのフィールド

Yes

NULL 以外 (有効なメモリを指し示している)

_MAX__TIME64_T未満にが 0 より大きい

EINVAL

-1 に設定されているすべてのフィールド

No

最初の 2 つのエラー条件の場合、「パラメーターの検証」に説明されているように、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、これらの関数は errno を EINVAL に設定し、EINVAL を返します。

解説

_localtime32_s 関数は、time_t 型の値として格納されている時刻を変換し、その結果を tm 型の構造体に格納します。 long 型の timer 値は、UTC の 1970 年 1 月 1 日 00 時 00 分 00 秒からの経過秒数を表します。 通常、この値は time 関数で取得されます。

_localtime32_s 関数は、ユーザーが最初に TZ グローバル環境変数を設定している場合、時刻を現地のタイム ゾーンに合わせて修正します。 TZ が設定されると、他の 3 つの環境変数 (_timezone、_daylight、および _tzname) が自動的に設定されます。 TZ 変数が設定されていない場合、localtime32_s 関数は [コントロール パネル] の [日付と時刻] で指定されているタイム ゾーンの情報を取得しようとします。 太平洋タイム ゾーンを説明する情報を取得できない PST8PDT が既定で使用されます。 これらの変数については、「_tzset」を参照してください。 TZ は、Microsoft 拡張機能であり、localtime の ANSI 規格には含まれていません。

注意

対象の環境で夏時間が有効かどうかを確認してください。

_localtime64_sは __time64_t 構造体を使用する日付を 23:59 によって表される (: _localtime32_s が 03:14 で日付を表す場合は 59、3000 12 年 1 月 31 日の世界協定時刻 (UTC: (UTC)1 年 1 月 07 日 19 時 2038、UTC。

localtime_s は _localtime64_sに評価する、time_t は __time64_tと等価ですが、インライン関数です。 コンパイラが time_t を従来の 32 ビット time_t として解釈するようにするには、_USE_32BIT_TIME_T を定義します。 この定義を行うことにより、localtime_sは _localtime32_s に評価されます。 この方法はお勧めしません。2038 年 1 月 19 日以降にアプリケーションでエラーが発生する可能性があり、64 ビット プラットフォームでは使用できないためです。

構造体の型 tm のフィールドは、それぞれが intでは以下の値を格納します。

  • tm_sec
    秒 (0 ~ 59)。

  • tm_min
    分 (0 ~ 59)。

  • tm_hour
    時間 (0 ~ 23)。

  • tm_mday
    日 (1 ~ 31)。

  • tm_mon
    月 (0 ~ 11、1 月 = 0)。

  • tm_year
    年 (実際の西暦から 1900 を引いた数)

  • tm_wday
    曜日 (0 ~ 6、日曜日 = 0)。

  • tm_yday
    年内の通算日 (0 ~ 365、1 月 1 日 = 0)。

  • tm_isdst
    夏時間が有効な場合は正の値、夏時間が無効な場合は 0、夏時間かどうかが不明な場合は負の値。 TZ の環境変数が設定されている場合、C ランタイム ライブラリは、夏時間 (DST) の計算を実装するための米国に適切な規則が使用されます。

必要条件

ルーチン

必須ヘッダー

localtime_s

<time.h>

_localtime32_s

<time.h>

_localtime64_s

<time.h>

互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。

使用例

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

同等の .NET Framework 関数

System::DateTime::ToLocalTime

参照

関連項目

時間管理

asctime_s、_wasctime_s

ctime、_ctime32、_ctime64、_wctime、_wctime32、_wctime64

_ftime、_ftime32、_ftime64

gmtime_s、_gmtime32_s、_gmtime64_s

localtime、_localtime32、_localtime64

time、_time32、_time64

_tzset