【问题标题】:How to print absolute time in TCL and relative time in TCL?如何在 TCL 中打印绝对时间和在 TCL 中打印相对时间?
【发布时间】:2018-03-21 13:17:10
【问题描述】:

如何在 TCL 中打印绝对时间?

输出类似于2018-03-07-14:32:09.040+05:30I-----

我想创建一个逻辑来打印纪元微秒。但我不能在 build clock milliseconds 中使用来打印纪元微秒。

【问题讨论】:

  • 使用[clock microseconds] 获取具有微秒精度的时间戳(应该从 Tcl 8.5 IMO 开始可用)。
  • 不过,我还没有完全理解这个问题:示例输出的14:32:09.040 部分表示毫秒精度(040 ms)。那么,您真正苦苦挣扎的是什么——时间格式或具有更高分辨率的时间戳,或两者兼而有之?请准确,不要让我们浪费时间在猜测上。

标签: tcl


【解决方案1】:

clock microseconds 应参考TCL documentation

以整数微秒返回当前时间。

但是,clock format 不支持这种高分辨率时钟值。所以你必须手动提取结果的微秒小数部分,使用clock format 以秒精度输出值,然后手动添加微秒相关的十进制值(“.XXXXXX”)。

此脚本将以微秒精度输出时间:

# get current time with microseconds precision:
set val [clock microseconds]
# extract time with seconds precision:
set seconds_precision [expr { $val / 1000000 }]
# find number of microseconds:
set microseconds [expr { $val - $seconds_precision*1000000 }]

# output the epoc with microseconds precision:
puts [format "%s.%06d" [clock format $seconds_precision -format "%Y-%m-%d %H:%M:%S"] $microseconds]

输出2018-03-07 11:04:59.946580

如果您更喜欢毫秒精度或想要显示时区,您可以调整脚本。

【讨论】:

  • @DonalFellows: 是的,更新了我的帖子并将尝试研究一个示例。
  • 您需要使用format 来添加该值,以便在需要时添加前导零。
【解决方案2】:

这可能对你有帮助:

set milliseconds [clock clicks]
variable time [format "%s_%03d" [clock format [clock seconds] -format %Y%m%d_%H%M%S] [expr {$milliseconds % 1000}] ]

puts $time

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    • 2016-02-25
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多