将秒转换为小时、分钟、秒格式 [英] Convert seconds to hours minutes seconds format

查看:5
本文介绍了将秒转换为小时、分钟、秒格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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]
您可能希望将其包装在过程…中

这篇关于将秒转换为小时、分钟、秒格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆