gpt4 book ai didi

tcl - 将秒转换为时分秒格式

转载 作者:行者123 更新时间:2023-12-01 06:13:46 25 4
gpt4 key购买 nike

我需要将以秒为单位的时间转换为 HH:MM:SS.mm 格式。正在从嵌入式设备读取秒输入,它是 seconds.millseconds 格式的 double。我尝试了以下转换代码但失败了:

set cpu_time [function_that_fetches_the_time]
puts "[clock format $cpu_time -format {%H:%M:%S}]"

失败并出现错误

expected integer but got "98.92"

从中抛出

"ParseFormatArgs {*}$args"
(procedure "::tcl::clock::format" line 6)

我可以将 double 转换为整数,上面的方法也可以,但如果在输出显示中也包含毫秒部分会更好。

另外,毫秒的时钟格式说明符是什么?

编辑:

似乎仅将 double 转换为 int 也不起作用。我试过了

puts "[clock format [expr int($cpu_time)] -format {%H:%M:%S}]"

它会导致一些奇怪的时间。例如,当嵌入式设备返回 3.53(我将其转换为 3)时,打印出的时间为 17:00:03

最佳答案

格式化可靠运行的间隔的最简单方法是全部手动完成。

set cpu_time [function_that_fetches_the_time]
set cpu_ms [expr { int(fmod($cpu_time, 1.0) * 1000) }]
set cpu_secs [expr { int(floor($cpu_time)) % 60 }]
set cpu_hrs [expr { int(floor($cpu_time / 3600)) }]
set cpu_mins [expr { int(floor($cpu_time / 60)) % 60 }]
puts [format "%d:%02d:%02d.%3d" $cpu_hrs $cpu_mins $cpu_secs $cpu_ms]

您可能希望将其包装在一个过程中……

关于tcl - 将秒转换为时分秒格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14408580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com