UTC (Coordinated Universal Time) 形式で、現在の日付と時刻を含みます。
Synopsis
$ZTIMESTAMP
$ZTS
概要
$ZTIMESTAMP には、現在の日付と時刻が UTC (Coordinated Universal Time) 値として含まれます。UTC は、時刻と日付の世界標準です。この値は、ローカル時刻 (および日付) の値と異なる場合がほとんどです。
$ZTIMESTAMP は、日付と時刻を次の形式の文字列として表します。
ddddd,ttttt.fff
ddddd は、1840 年 12 月 31 日からの経過日数を示す整数です。ttttt は、現在の日付の午前 0 時からの経過秒数を示す整数です。fff は、小数秒を示す可変桁数です。この形式は $HOROLOG と似ていますが、$HOROLOG には小数秒は含まれません。
現在の日付と時間 (UTC) が以下のようになると仮定します。
2004-07-23 15:17:27.984
そのとき、$ZTIMESTAMP は以下の値を持ちます。
59739,55047.984
$HOROLOG 値と $ZTIMESTAMP 値の主な違いには、次の 2 つがあります。
Note:
ローカル時刻と UTC 時刻を比較する際には注意が必要です。
この特殊変数は、SET コマンドを使用して変更することはできません。変更を試みると、<SYNTAX> エラーが返されます。
Note:
$ZTIMESTAMP は、バージョン 7.0 以前の Open VMS システムでは使用できません。VMS 6.0 シリーズ・システムで $ZTIMESTAMP を呼び出すと、<UNIMPLEMENTED> エラーが返されます。
その他の UTC メソッド
次の例のように、tformat 値 7 または 8 を指定して $ZDATETIME および $ZDATETIMEH 関数を使用することで、時間情報を UTC として表すことができます。
   WRITE !,$ZDATETIME($HOROLOG,1,7,2)
   WRITE !,$ZDATETIME($ZTIMESTAMP,1,1,2)
上記の $ZDATETIME 関数はどちらも、(ローカル時刻ではなく) UTC として計算された現在の時刻を返し、必要に応じ、それに合わせて日付を調整します。ただし、返される値は同じではありません。tformat 値 7 および 8 によって、時刻値の前に文字 “T”、後に文字 “Z” が挿入されます。また、$HOROLOG 時刻には 1 秒以下の秒数が含まれないので、上の例の precision 2 によって小数部にゼロが埋め込まれます。
以下の構文のいずれかを使用してシステム・メソッドを呼び出すことで、$ZTIMESTAMP と同じタイム・スタンプ情報を取得することができます。
   WRITE !,$SYSTEM.SYS.TimeStamp()
   WRITE !,##class(%SYSTEM.SYS).TimeStamp()
詳細は、$SYSTEM 特殊変数と、Caché クラス・リファレンス の “Class %SYSTEM.SYS” セクションを参照してください。
次の例は、$ZTIMESTAMP$HOROLOG によって返される値を比較し、$ZTIMESTAMP の時刻部分がどのように変換されるかを示します (この簡単な例では、サマータイムなどのローカル時刻調整に合わせて 1 つの調整のみが行われます。その他のタイプのローカル時刻調整では、clocksecs および stampsecs に矛盾する値が含まれることがあります)。
   SET stamp=$ZTIMESTAMP,clock=$HOROLOG
   WRITE !,"local date and time: ",$ZDATETIME(clock,1,1,2)
   WRITE !,"UTC date and time:   ",$ZDATETIME(stamp,1,1,2)
   IF $PIECE(stamp,",") '= $PIECE(clock,",") {
     WRITE !,"Time difference affects date" }
   SET clocksecs=$EXTRACT(clock,7,11)
   SET stampsecs=$EXTRACT(stamp,7,11)-($ZTIMEZONE*60)
   IF clocksecs=stampsecs {
      WRITE !,"No local time variant" 
      WRITE !,"Local time is timezone time" }
   ELSE {
         SET stampsecs=stampsecs+3600
         IF clocksecs=stampsecs {
           WRITE !,"Daylight Savings Time variant:"
           WRITE !,"Local time offset 1 hour from timezone time" }
         ELSE { WRITE !,"Cannot reconcile due to local time variant" }
   }
   QUIT
関連項目
$HOROLOG 特殊変数
$ZTIMEZONE 特殊変数