localtime、_localtime64

Visual Studio .NET 2003

時刻値を現地のタイム ゾーンに合わせて変換します。

struct tm *localtime(
   const time_t *timer 
);
struct tm *_localtime64(
   const __time64_t *timer 
);

パラメータ

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

戻り値

結果として得られた構造体へのポインタを返します。timer の値が 1970 年 1 月 1 日 00 時 00 分 00 秒以前を示している場合は NULL を返します。

localtime 関数が世界協定時刻 (UTC: Coordinated Universal Time) における 2038 年 1 月 18 日 19 時 14 分 07 秒までを表すのに対し、__time64_t 構造体を使用する _localtime64 関数では、世界協定時刻における 3000 年 12 月 31 日 23 時 59 分 59 秒までを表すことができます。

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: Daylight Saving Time) の計算では合衆国の法律に従うことを前提としています。

解説

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

gmtimemktime、および localtime の関数は、静的に割り当てられている 1 個の tm 構造体を使用して変換を行います。これらのルーチンを呼び出すたびに、前の呼び出しの結果は破棄されます。

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

メモ   使用環境では、夏時間が有効かどうかを確認してください。

必要条件

ルーチン 必須ヘッダー 互換性
localtime <time.h> ANSI、Win 98、Win Me、Win NT、Win 2000、Win XP
_localtime64 <time.h> Win 98、Win Me、Win NT、Win 2000、Win XP

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

ライブラリ

C ランタイム ライブラリのすべてのバージョン。

// crt_localtim.c
/* 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 long integer. */
        newtime = _localtime64( &long_time ); /* Convert to local time. */

        if( newtime->tm_hour > 12 )        /* Set up extension. */
                strcpy( 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;

        printf( "%.19s %s\n", asctime( newtime ), am_pm );
}

出力例

Tue Feb 12 10:05:58 AM

参照

時間管理 | asctime | ctime | _ftime | gmtime | time | _tzset | ランタイム ルーチンおよび同等の .NET Framework 関数

表示: