日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


 

OpenVMS ドキュメント
ライブラリ

タイトル
目次
まえがき
リファレンス・セクション
   ≫ライブラリ関数一覧
索引
PDF
OpenVMS ホーム

HP OpenVMS
HP C ランタイム・ライブラリ・リファレンス・マニュアル (下巻)


目次 索引




タイム・ゾーン変換の設定とアクセスを行います。

形式

#include <time.h>

void tzset (void);

extern char *tzname[];

extern long int timezone;

extern int daylight;


説明

tzset関数は, ctimelocaltimemktimestrftime,および wcsftime関数が使用する時刻変換情報を初期化します。

tzset関数は,以下の外部変数を設定します。

  • tznameは,"std" を標準タイム・ゾーンの 3 バイトの名前, "dst" をサマータイム・ゾーンの 3 バイトの名前として,次のように設定される。

    tzname[0] = "std" 
    tzname[1] = "dst" 
    

  • daylightは,タイム・ゾーンにサマータイムが決して設定されない場合には 0 に設定される。そうでなければ, daylightは 1 に設定される。

  • timezoneは,UTC とローカル標準時の間の差に設定される。

環境変数 TZは, tzsetが時刻変換情報をどのように初期化するかを指定します。

  • TZが環境に存在しなかった場合には,次のように実装依存のタイム・ゾーン情報が使用される。
    デフォルトのタイム・ゾーン規則を記述する tzfile形式のファイルをポイントする SYS$LOCALTIME システム論理名の定義に従って,ローカル・ウォール・クロック時刻に最も近いものが使用される。
    このシステム論理名は,OpenVMS Version 7.0 以降のバージョンにおいてインストール時に設定されるもので, SYS$COMMON:[SYS$ZONEINFO.SYSTEM] をルートとするディレクトリ階層下のタイム・ゾーン・ファイルを値とする。

      注意
    HP C RTL は,パブリック・ドメインのタイム・ゾーン処理パッケージを使用しており,タイム・ゾーン変換規則は容易にアクセスあるは変更可能なファイルに格納されています。これらのファイルは, SYS$COMMON:[SYS$ZONEINFO.SYSTEM.SOURCES] ディレクトリに置かれています。
    タイム・ゾーン・コンパイラ zic は,これらのファイルを, <tzfile.h>ヘッダ・ファイルによって記述されている特殊な形式に変換します。変換後のファイルは, SYS$TZDIR システム論理名がポイントする SYS$COMMON:[SYS$ZONEINFO.SYSTEM] をルート・ディレクトリとして作成されます。この形式は,タイム・ゾーン情報を処理する C ライブラリ関数から読み込むことができます。たとえば,米国東部では, SYS$LOCALTIME は SYS$COMMON:[SYS$ZONEINFO.SYSTEM.US]EASTERN に定義されます。

  • TZが環境に存在するが,その値が null 文字列だった場合には,協定世界時 (UTC) が使用される ( うるう秒の修正は行われない )。

  • TZが環境に存在しており,その値が null 文字列でなければ,その値は 表 1-11 に示す 3 つの形式のいずれかになっている。

表 1-11 タイム・ゾーン初期化規則
TZ の形式 意味
: UTC が使用される。
: pathname コロンの後の文字列は,時刻変換情報を読み込む tzfile 形式のファイルのパス名を指定する。スラッシュ (/) で始まるパス名は絶対パス名を表す。それ以外のパス名は,SYS$TZDIR によって指定されるシステム時刻変換情報ディレクトリからの相対パスである。このディレクトリはデフォルトでは SYS$COMMON:[SYS$ZONEINFO.SYSTEM] である。
stdoffset[ dst[ offset]
[,rule]]
この値は,まず時刻変換情報を読み込むファイルのパス名として使用される (: pathname 形式と同じ )。

そのファイルを読み込めなかった場合,この値は次のように時刻変換情報の直接指定として解釈される。

  stddst---タイム・ゾーンを指定する 3 つ以上の文字:

  • std---標準タイム・ゾーン。必須。

  • dst---サマータイム・ゾーン。オプション。 dst が省略された場合,サマータイムは適用されない。

大文字と小文字は明示的に許容されている。以下のものを除く任意の文字が使用できる。

  • 数字

  • 先頭のコロン (:)

  • コンマ (,)

  • マイナス ( - )

  • プラス (+)

  • ASCII null 文字

  offset---UTC に合わせるためにローカル時刻に追加される値。オフセットは次の形式を持つ。
hh[:
mm[:
ss]]

この形式の各項目は,以下の意味を持つ。

  • hh (時) は,0〜24 の範囲の 1 つまたは 2 つの数字。

  • mm (分) は,0〜59 の範囲の値 (オプション)。

  • ss (秒) は,0〜59 の範囲の値 (オプション)。

  std の後のオフセットは必須である。 dst の後にオフセットがなかった場合には,標準時よりも 1 時間早いサマータイムが仮定される。 1 つまたは複数の数字を使用できる。値はつねに 10 進数として解釈される。

オフセットの前にマイナス記号 ( - ) がある場合,そのタイム・ゾーンはグリニッジの東にある。そうでなければグリニッジの西にある。これはプラス記号 (+) で示すこともできる。

  rule---サマータイムにいつ切り替わり,いつ終了するのかを示す。規則は次の形式を持つ。
start[/
time],
end[/
time]

各項目は以下の意味を持つ。

  • start は,標準時からサマータイムに切り替わる日付を示す。

  • end は,サマータイムから標準時へと戻る日付を示す。

  startend が省略された場合のデフォルトは,米国のサマータイムの開始日と終了日である。 startend の形式は,次のいずれかでなくてはならない。

  • Jn---ユリウス日 n (1 ≦ n ≦ 365)。うるう日は算入されない。つまり,うるう年を含むすべての年において, 2 月 28 日は 59 日目,3 月 1 日は 60 日目である。 2 月 29 日を明示的に参照することはできない。

  • n---ゼロ・ベースのユリウス日 (0 ≦ n ≦ 365)。うるう日は算入され,2 月 29 日を参照することができる。

  • Mm.n.d--- m 月の n 番目の d 曜日。
    0 ≦ n ≦ 5
    0 ≦ d ≦ 6
    1 ≦ m ≦ 12

    n が 5 である場合には, m 月の最後の d 曜日を示す。0 番目の曜日は日曜日である。

  time---現在のローカル時刻で,サマータイムへの切り替えまたは終了が起こる時刻。 time 引数は,先頭のマイナス ( - ) またはプラス (+) 記号を使用できないという点を除けば, offset と同じ形式を持つ。 time が指定されなかった場合のデフォルトは 02:00:00 である。

TZ 指定に rule が含まれていない場合, SYS$POSIXRULES システム論理名に定義されている tzfile 形式のファイルで指定された規則が使用される。その際,標準時とサマータイムの UTC からのオフセットは, TZ で指定されたオフセット値に置き換えられる。

TZ tzfile 形式のファイルを指定しておらず,直接指定としても解釈できない場合には,UTC が使用される。

  注意
OpenVMS Version 7.0 で導入された UTC ベースの時刻関数は,非 UTC ベースの時刻関数と比べると性能が低くなっていました。

OpenVMS Version 7.1 では,性能を改善するために,タイム・ゾーン・ファイル用のキャッシュが追加されました。キャッシュのサイズは論理名 DECC$TZ_CACHE_SIZE によって決定されます。ほとんどの国が時刻を年に 2 回変更することに対応して,デフォルトのキャッシュ・サイズはタイム・ゾーン・ファイルを 2 つ保持できるだけの大きさになっています。

ctimelocaltimemktimestrftime,および wcsftimeも参照してください。




TZ 指定の例

EST5EDT4,M4.1.0,M10.5.0 

この TZ 指定の例は, 1987 年に定められた米国東部タイム・ゾーンの規則を記述したものです。

  • EST (Eastern Standard Time) は標準時を示し,UTC から 5 時間遅れています。

  • EDT (Eastern Daylight Time) はサマータイムを示し, UTC から 4 時間遅れています。 EDT は 4 月の最初の日曜日に始まり,10 月の最後の日曜日に終わります。

どちらの場合も time は指定されていないため,変更はデフォルトの時刻である午前 2:00 に行われます。この例では,開始日および終了日はデフォルト値に等しいので省略することもできます。


目次 索引

© 2012 Hewlett-Packard Development Company, L.P.