| |
●基本テンプレート
clock add $time 2 day ?-option value?
clock format $time -format "%Y/%m/%d %H:%M:%S" ?-option value...?
clock scan $timestr -format "%Y/%m/%d %H:%M:%S" ?-option value...?
clock seconds
|
Tcl 8.5からは高精度のシステムクロックを参照するサブコマンド
(clicks, microseconds, milliseconds)もありますが割愛します。
●今日の零時のtime値を得るには
clock secondsで得られるtime値は、1970年1月1日の零時(UTC:協定世界時≒グリニッジ標準時)からの秒数で返されます。
従って、24*60*60で割った余りを切り捨て、
再び24*60*60を掛ければ、今日の零時の値になりそうです。
と思いきや、
日本とUTCは9時間ずれているので、これだと今日の零時ではなく、午前9時になってしまいます。
set now [clock seconds]
# ↓これだと09:00になってしまう
set today [expr int($now / (24*60*60)) * (24*60*60)]
|
うまい方法はないようで、結局formatした後再度scanするという、愚直な方法です。
set now [clock seconds]
set temp [clock format $now -format "%Y%m%d"]
set today [clock scan $temp -format "%Y%m%d"]
|
なお、clock addなどのコマンドには-timezoneや-localeオプションがあり、
時刻の演算と同時にタイムゾーンを指定することもできます。
(first uploaded 2005/03/20 last updated 2005/03/20, MISUMI URANO)
|