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

如何在TCL中打印绝对时间和相对时间?,tcl,Tcl,如何在TCL中打印绝对时间 输出类似于2018-03-07-14:32:09.040+05:30I----- 我想创建一个以微秒为单位打印历元的逻辑。但是我不能使用内置的时钟毫秒打印纪元微秒。您应该参考时钟微秒: 以微秒整数形式返回当前时间 但是,时钟格式不支持此高分辨率时钟值。因此,您必须手动提取结果的微秒小数部分,使用时钟格式以秒精度输出值,然后手动向其添加微秒相关的十进制值(“.XXXXXX”) 此脚本将以微秒精度输出时间: # get current time with microsec

如何在TCL中打印绝对时间

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

我想创建一个以微秒为单位打印历元的逻辑。但是我不能使用内置的
时钟毫秒
打印纪元微秒。

您应该参考
时钟微秒

以微秒整数形式返回当前时间

但是,
时钟格式
不支持此高分辨率时钟值。因此,您必须手动提取结果的微秒小数部分,使用
时钟格式
以秒精度输出值,然后手动向其添加微秒相关的十进制值(“.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

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

您应该参考时钟微秒的:

以微秒整数形式返回当前时间

但是,
时钟格式
不支持此高分辨率时钟值。因此,您必须手动提取结果的微秒小数部分,使用
时钟格式
以秒精度输出值,然后手动向其添加微秒相关的十进制值(“.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

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

这可能有助于您:

set毫秒[时钟点击]
可变时间[格式“%s_%03d”[时钟格式[时钟秒]-格式%Y%m%d_%H%m%s][expr{$millizes%1000}]
放置$time
这可能会帮助您:

set毫秒[时钟点击]
可变时间[格式“%s_%03d”[时钟格式[时钟秒]-格式%Y%m%d_%H%m%s][expr{$millizes%1000}]

放置$time
使用
[时钟微秒]
以微秒精度获取时间戳(应该从Tcl 8.5 IMO开始提供)。但是,我还没有完全理解这个问题:示例输出的
14:32:09.040
部分指示毫秒精度(
040
ms)。那么,您在时间格式化或具有更高分辨率的时间戳,或者两者兼而有之时,到底在做什么呢?请精确一点,不要让我们浪费时间猜测。使用
[时钟微秒]
以微秒精度获取时间戳(应该从Tcl 8.5 IMO开始提供)。不过,我还没有完全理解这个问题:示例输出的
14:32:09.040
部分指示毫秒精度(
040
ms)。那么,您在时间格式化或具有更高分辨率的时间戳,或者两者兼而有之时,到底在做什么呢?请准确一点,不要让我们浪费时间猜测。@DonalFellows:True,更新了我的帖子,并将尝试制作一个示例。您需要使用
格式添加该值,以便在需要时添加前导零。@DonalFellows:True,更新了我的帖子,并将尝试制作一个示例。您需要使用
格式
添加该值,以便在需要时添加前导零。