次の方法で共有


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

変更されない

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

NULL

EINVAL

-1 へのすべてのフィールドの設定

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

_MAX__TIME64_T 未満にが 0 より大きい

EINVAL

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

最初の 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 (UTC)3000 12 年 1 月 31 日の世界協定時刻 : 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