WRITE !,$ZDATETIME($HOROLOG,1,7,2)
WRITE !,$ZDATETIME($ZTIMESTAMP,1,1,2)
上記の
$ZDATETIME 関数はどちらも、(ローカル時刻ではなく) UTC として計算された現在の時刻を返し、必要に応じ、それに合わせて日付を調整します。ただし、返される値は同じではありません。
tformat 値 7 および 8 によって、時刻値の前に文字 T、後に文字 Z が挿入されます。また、
$HOROLOG 時刻には 1 秒以下の秒数が含まれないので、上の例の
precision 2 によって小数部にゼロが埋め込まれます。
WRITE !,$SYSTEM.SYS.TimeStamp()
WRITE !,##class(%SYSTEM.SYS).TimeStamp()
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