DS2プロシジャの「TZパッケージ」でタイムゾーン関係の処理ができます
アメリカとかだとタイムゾーンが地域によって違うから、パッケージ化するほどの需要あるんですかね。
以下は簡単な例です。
proc ds2;
data _null_; method init(); dcl package tz t(); dcl double utc tokyo having format nldatm20.; dcl double tokyo_offset having format time8.; /* UTC timeを取得 */ utc = t.getutctime(); /* Local timeを取得 */ tokyo = t.getlocaltime('Asia/Tokyo'); /* Offsetを取得 */ tokyo_offset = t.getoffset('Asia/Tokyo'); put utc=; put tokyo=; put tokyo_offset=; end; enddata; run; quit;
ログ
utc=2018/09/04 11:56:47
tokyo=2018/09/04 20:56:47 tokyo_offset= 9:00:00 |
メソッドの中で「’Asia/Tokyo’」というように地域を指定していますが、タイムゾーンIDといって、「SAS timezone id」とかググれば地域ごとのタイムゾーンIDが載ってるSASのリファレンスが出てくるはずです。
あとは構文自体も大したことないんで、詳細はリファレンスを見てみてください。
とりあえず私は業務で使う事ないんで、暇つぶし用のプログラムを書いて遊んでます。
proc ds2;
data _null_; method init(); dcl package tz t(); dcl double tokyo newyork honolulu vancouver having format nldatm20.; tokyo = t.getlocaltime('Asia/Tokyo'); newyork = t.getlocaltime('America/New_York'); honolulu = t.getlocaltime('Pacific/Honolulu'); vancouver = t.getlocaltime('America/Vancouver'); put tokyo=; put newyork=; put honolulu=; put vancouver=; enddata; run; quit; ログ tokyo=2018/09/04 20:51:00 newyork=2018/09/04 07:51:00 honolulu=2018/09/04 01:51:00 vancouver=2018/09/04 04:51:00 |
適当な地域の現在時刻を調べて「あーニューヨーカーは今頃寝てるのか、いやむしろ寝てないのかな」とか妄想するために使うものだと思っています。
一応、夏時間も考慮されているっぽい(夏時間が存在する地域でちゃんと夏時間の日時になってたんで)
0 件のコメント:
コメントを投稿