如何获得TCL时钟值“今天”?

时间:2019-01-20 00:20:17

标签: time tcl

在tcl的12:00:00 am处获取“今天”的值的最佳方法是什么?

要获取“现在”的值,我可以使用:

set now [clock seconds]

但是今天将在拨打电话的任何小时/分钟/秒进行。如果我需要早上12:00:00怎么办?我是否需要诉诸于此:

set today [clock scan [clock format [clock seconds] -format "%Y-%m-%d"] -format "%Y-%m-%d"]

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

要获取今天12:00的时间戳,请使用:

set timestamp [clock scan "12:00:00" -format "%H:%M:%S"]

set timestamp [clock scan "12:00" -format "%H:%M"]

要在另一任意天获得这样的时间戳,请计算基本时间戳,然后在上述操作期间使用-base将其应用。 (-base的默认值是调用时clock seconds的结果;这是最常用的。而且,如果您解析一个没有时间的日期,则时间部分将被视为午夜那天。)

set base [clock scan "2018/12/25" -format "%Y/%m/%d"]
set timestamp [clock scan "12:00:00" -format "%H:%M:%S" -base $base]
puts [clock format $timestamp]

您还可以一次构建所有时间字符串,然后一次性解析它。还要注意,单独解析基础的一个很好的理由是,您可以在解析整个时间集合时创建一次并重复使用几次(这在运行时午夜时停止了对时间变化的解释)您的程序)。


当然,如果您不使用clock scan选项,-format也会推断出您在谈论小时,分钟和秒,但这很容易理解,如果您确实知道格式,则不建议使用。 (对于非美国订单日期,它不能很好地应付,并且在这种情况下,它使用的内部解析器会有一些奇怪的行为。)