Tcl 时钟函数操作
在处理tcl时钟功能时,我有点进退两难 这是我的密码:Tcl 时钟函数操作,tcl,Tcl,在处理tcl时钟功能时,我有点进退两难 这是我的密码: set old_date 0 if{ "[clock format [clock scan $old_date] -format {%d %b}] != "[clock format [clock scan $event_date] -format {%d %b}]} { if{$old_date !=0} { set myTest($value) $old_date; #some o
set old_date 0
if{ "[clock format [clock scan $old_date] -format {%d %b}] != "[clock format [clock scan $event_date] -format {%d %b}]}
{
if{$old_date !=0}
{
set myTest($value) $old_date;
#some other stuff
}
}
set old_date $event_date
它在大多数情况下都有效。
但我的问题是
[clock format[clock scan$old_date]-format{%d%b}
如果$old_date
=0
返回今天的日期
我知道它可能返回了正确的值,但如果值为零,我不希望它返回今天的日期。这有点打乱了我的比较逻辑。我可能可以检查是否存在if条件,但是
我可以用时钟功能做些什么吗?问题是你正在做(实际上)
[clock scan 0]
。如果所有其他操作都失败,则时钟扫描
命令将返回到尝试解析您放入其中的任何内容。使用0
,它最终决定它引用当前日期的00:00:00
。我不知道这是否是对该字符串的正确解析,但可以说它没有错:这是一个真正可怕的非规范化时间
在旧日期中保留时间戳是有意义的;这是时钟扫描
返回的值。既然您正在寻找日期级别的粒度,那么让我们选择一天中的标准时间来表示该天(中午,格林尼治标准时间)。现在,我们可以使用-base
和-gmt
选项使转换代码中的所有内容都正常工作(为方便起见,将其放入一个小程序中):
有鉴于此,我们现在可以重写您的其余代码:
set old_date 0
if {$old_date != [dateStamp $event_date] && $old_date != 0} {
set myTest($value) [clock format $old_date -format "%d %b"]
#some other stuff
}
set old_date [dateStamp $event_date]
问题是您正在执行(实际上)[时钟扫描0]
。如果所有其他操作都失败,则时钟扫描
命令将返回到尝试解析您放入其中的任何内容。使用0
,它最终决定它引用当前日期的00:00:00
。我不知道这是否是对该字符串的正确解析,但可以说它没有错:这是一个真正可怕的非规范化时间
在旧日期中保留时间戳是有意义的;这是时钟扫描
返回的值。既然您正在寻找日期级别的粒度,那么让我们选择一天中的标准时间来表示该天(中午,格林尼治标准时间)。现在,我们可以使用-base
和-gmt
选项使转换代码中的所有内容都正常工作(为方便起见,将其放入一个小程序中):
有鉴于此,我们现在可以重写您的其余代码:
set old_date 0
if {$old_date != [dateStamp $event_date] && $old_date != 0} {
set myTest($value) [clock format $old_date -format "%d %b"]
#some other stuff
}
set old_date [dateStamp $event_date]
为什么不在if语句中使用'or'(| |)/'和'(&&&&')?例如,如果$old|u date为0(或任何测试)或/且我的时钟比较不相等,则输入此块…为什么不在If语句中使用'or'(| |)/'和'(&&&&')?例如,如果$old_date为0(或任何测试)或/和我的时钟比较不相等,则输入此块。。。