Tcl 将日期设置为从当前unix时间戳算起的90天

Tcl 将日期设置为从当前unix时间戳算起的90天,tcl,Tcl,您好,我想设置我的future_date变量以显示从今天起90天的日期 set $future_date "" #set $future_date to date in unixtime stamp 90 days from the current timestamp 我可以在tcl中这样做吗?在tcl中,clock seconds命令以秒为单位返回现在的时间。要增加90天,您必须将90乘以60(一分钟内的秒)、60(一小时内的分钟)和24(一天内的小时): 有关详细信息,请查阅时钟命令。在T

您好,我想设置我的future_date变量以显示从今天起90天的日期

set $future_date ""
#set $future_date to date in unixtime stamp 90 days from the current timestamp

我可以在tcl中这样做吗?

在tcl中,
clock seconds
命令以秒为单位返回现在的时间。要增加90天,您必须将90乘以60(一分钟内的秒)、60(一小时内的分钟)和24(一天内的小时):


有关详细信息,请查阅
时钟
命令。

在Tcl中,
时钟秒
命令以秒为单位返回当前时间。要增加90天,您必须将90乘以60(一分钟内的秒)、60(一小时内的分钟)和24(一天内的小时):


有关详细信息,请查阅
时钟
命令。

方法是使用
时钟添加

# The [clock seconds] produces _now_
set future_date [clock add [clock seconds] 90 days]
set future_readable [clock format $future_date]
好的,差不多是这样。首先,在某些地区,它大约半年都不起作用。问题出在哪里?他们有DST变化,这意味着一天的长度实际上不是恒定的(有时,公民日为23或25小时)。然而,应用这种修正需要了解当前时区(因为世界不同地区有不同的规则)。时区是参照以下内容指定的:

第二个问题是,这忽略了闰秒。请注意,如果你没有编写GPS软件或其他同样敏感的东西,这可能正是你想要的(如果你真的在意,你可能有合适的软件/算法来应用修正)

第三个问题是,这只适用于8.5以后的版本(当
clock
命令几乎从头开始重写时;我们厌倦了处理其他人在时间处理方面的bug,决定只使用我们自己的!),因此如果保守地仍然使用8.4(或之前!),那么您需要一个不同的咒语:

set future_date [clock scan "now + 90 days"]
set future_readable [clock format $future_date]
这不是首选,因为它没有得到正确的时区处理(可能使用当前系统时区,也可能使用UTC[*]),并且构建在高度不明显的时间字符串解析器之上。尽管如此,它还是8.5版本之前的最佳选择



[*]不要低估这会有多奇怪;我记得处理过第三方打印机驱动程序中的一个bug,当它加载到Windows上的一个单独进程中时,会更改所有正在运行的应用程序的系统时区,直到打印完成。即使是确认实际发生的事情也很困难(就像后来把我的下巴从地板上抬起来一样)。

方法是使用
时钟添加

# The [clock seconds] produces _now_
set future_date [clock add [clock seconds] 90 days]
set future_readable [clock format $future_date]
好的,差不多是这样。首先,在某些地区,它大约半年都不起作用。问题出在哪里?他们有DST变化,这意味着一天的长度实际上不是恒定的(有时,公民日为23或25小时)。然而,应用这种修正需要了解当前时区(因为世界不同地区有不同的规则)。时区是参照以下内容指定的:

第二个问题是,这忽略了闰秒。请注意,如果你没有编写GPS软件或其他同样敏感的东西,这可能正是你想要的(如果你真的在意,你可能有合适的软件/算法来应用修正)

第三个问题是,这只适用于8.5以后的版本(当
clock
命令几乎从头开始重写时;我们厌倦了处理其他人在时间处理方面的bug,决定只使用我们自己的!),因此如果保守地仍然使用8.4(或之前!),那么您需要一个不同的咒语:

set future_date [clock scan "now + 90 days"]
set future_readable [clock format $future_date]
这不是首选,因为它没有得到正确的时区处理(可能使用当前系统时区,也可能使用UTC[*]),并且构建在高度不明显的时间字符串解析器之上。尽管如此,它还是8.5版本之前的最佳选择



[*]不要低估这会有多奇怪;我记得处理过第三方打印机驱动程序中的一个bug,当它加载到Windows上的一个单独进程中时,会更改所有正在运行的应用程序的系统时区,直到打印完成。即使是确认实际发生的事情也很难(就像后来把我的下巴从地板上抬起来一样)。

如果所有的日子都是一样长的话!不幸的是,他们(微妙地)没有达成一致。Donal是首选解决方案。日期/时间是一个非常复杂的话题。谢谢多纳尔和格伦指出这一点。此外,在工作中,我们运行Tcl 8.4,因此无法访问
clock add
命令!不幸的是,他们(微妙地)没有达成一致。Donal是首选解决方案。日期/时间是一个非常复杂的话题。谢谢多纳尔和格伦指出这一点。此外,在工作中,我们运行Tcl 8.4,因此无法访问
clock add
命令。