我需要创建一个脚本,我可以在此处计算持续时间,例如:
assign duration1 5.hours
assign duration2 4.minutes
assign duration3 10.seconds
assign seconds [calc_duration [getVar duration1] + [getVar duration2] + [getVar duration3]]*
我想获得示例的响应(秒),我将有“18250”秒。
你能帮我解决这个问题吗?
谢谢。
最佳答案
clock add
命令可以对持续时间进行计算,但它需要一个基本时间才能使用。这很重要,因为例如,由于 DST 规则(每年的规则本身并不相同),并非所有月份的天数都相同,并且并非所有天的小时数都相同。如果您只使用小单位而不是太多,您可以忽略这一点并使用 0
(Unix 纪元的开始)作为基准时间。
set seconds [clock add 0 5 hours 4 minutes 10 seconds]
但如果您的工作时间较长,则需要更加小心。 clock add
仍然具有这些工具,但您必须正确选择基本时间戳并指定您感兴趣的区域设置。
# You're really supposed to scan with a format, but I'm lazy
set baseTimestamp [clock scan "4/4/2022 10:30 EST"]
set timezone :America/New_York; # EST/EDT
set timeBits {5 months 4 days 3 hours 2 minutes 1 second}
# Do the time arithmetic
set targetTimestamp [clock add $baseTimestamp {*}$timeBits -timezone $timezone]
# Convert into an elapsed number of seconds
set seconds [expr {$targetTimestamp - $baseTimestamp}]
# 13575721 seconds is a fair while...
关于用于计算持续时间的 Tcl 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73607818/