$ZH[OROLOG]はカンマで区切られた4つの部分を返します(たとえば、 "63638,39194,258602,14400")。最初の2つの部分は $HOROLOG の2つの部分と同じです。$ZHOROLOG は、$PIECE($HOROLOG, ",",...) の形式のすべてのアプリケーションコードで、$HOROLOGの完全互換です。たとえば、$ZDATE() の最初の引数として$ZHOROLOGを使用できます。3番目の部分数字は、現在の秒単位のマイクロ秒数です。3番目の部分数字の精度は、システムクロックの精度に左右されます。4番目の部分文字は、UTCまでの秒単位のオフセットです。有効なUTC時間オフセットの場合、4番目の部分値は -43200(UTC-12:00) と +50400(UTC+14:00)の間の数値です。4番目の部分値の値は、夏時間を守っているそれらの場所で期待される年を通して変わりません。UTCの$HOROLOG表現を取得するには、4番目の部分を$ZHOROLOGの2番目の部分に追加し、次のように実行します:
もし結果が負の数である場合は、最初の部分から1を減算し、86400(1日の秒数)を2番目の部分に加算します。
もし結果が86400より大きい正の数である場合は、最初の部分に1を加え、2番目の部分から86400を引いてください。
例:
GTM>zprint ^zhoro zhoro(zone) set:'$data(zone) zone="Europe/London" new zutzh set zutzh=$$getzutzh(zone) do displaytzdetails(zutzh,zone) quit getzutzh(zone) set shcommand="TZ="_zone_" $gtm_dist/mumps -run %XCMD 'write $zut,"" "",$zhorolog,"" "",$zdate($horolog,""MON DD,YYYY 12:60:SS AM""),!'" set descname="tzpipe" open descname:(shell="/bin/sh":command=shcommand:readonly)::"pipe" use descname read dateline use $principal close descname quit dateline displaytzdetails(zutzh,zone) set zut=$piece(zutzh," ",1) ; $ZUT set zh=$piece(zutzh," ",2) ; $ZHOROLOG set zhfp=$piece(zh,",",1) ; first piece of $ZH of zone set zhsp=$piece(zh,",",2) set zhtp=$piece(zh,",",3) set zhfop=$piece(zh,",",4) set tz=zhfop/3600,hours=$select(tz*tz=1:" Hour ",1:" Hours ") write "Time in ",zone," ",$piece(zutzh," ",3,6)," $ZUT=",zut,!,$select(tz<0:-tz_hours_"Ahead of",1:tz_hours_"Behind")," UTC",! set zhsp=zhsp+zhfop if zhsp>86400 set zhfp=zhfp+1,zhsp=zhsp-86400 ; 86400 seconds in a day else if zhsp<1 set zhfp=zhfp-1,zhsp=zhsp+86400 write "Time in UTC ",$zdate(zhfp_","_zhsp,"MON DD,YYYY 12:60:SS AM") quit GTM>do ^zhoro Time in Europe/London APR 10,2015 05:20:29 PM $ZUT=1428682829213711 1 Hour Ahead of UTC Time in UTC APR 10,2015 04:20:29 PM GTM>