用于计算持续时间的 Tcl 脚本

标签 tcl

我需要创建一个脚本,我可以在此处计算持续时间,例如:

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/

相关文章:

timeout - 如何优雅地终止无响应的 tcl 脚本?

linux - 期望+在期望脚本中更改目录

regex - 下面的正则表达式试图匹配什么?

regex - 如何在 tcl 中使用正则表达式获取第一个斜杠(/)后的整个字符串

bash - 如何让 tclsh 忽略 EOF?

tcl - 删除TCL中除部分文件外的所有文件

tcl - 逻辑非运算符

operators - 我可以在 Tcl 中创建运算符吗?

compiler-errors - 如何在Ubuntu 17.10上编译WordNet-3.0?

linux - 右大括号后的额外字符