从Tcl中的年月格式字符串中提取时钟秒数

从Tcl中的年月格式字符串中提取时钟秒数,tcl,Tcl,我试图在Tcl中提取一个字符串的时钟时间,该字符串的格式为YearMonth,如下所示。2020年1月的“202001” % set value "202001" % set clocktime [clock scan $value -format "%Y%m"] 1608537600 您可以看到Tcl提取的大纪元时间为1608537600 正如你所看到的,这是不正确的。如果我将该值转换回字符串值,则返回为2020年12月 % clock format

我试图在Tcl中提取一个字符串的时钟时间,该字符串的格式为YearMonth,如下所示。2020年1月的“202001”

% set value "202001" 
% set clocktime [clock scan $value -format "%Y%m"]
1608537600
您可以看到Tcl提取的大纪元时间为1608537600

正如你所看到的,这是不正确的。如果我将该值转换回字符串值,则返回为2020年12月

% clock format 1608537600 -format "%Y%m"
202012
我在这里做错了什么?

在(基本上是说“日期根据预处理格式字符串中的字段确定。按优先顺序:…”)中指定,如果未指定日期,则该日期将作为当前日期

由于提供的时钟值中缺少日期,时钟扫描将返回脚本运行的日期作为日期。您可以尝试使用值
2019
运行它,如果您在同一天运行,您将得到相同的结果

要避免这种情况,您可以添加日期。将
01
添加到值中,并将
%d
添加到格式字符串中应该不会太难。

如果未指定日期,则在(基本上是说“日期根据预处理格式字符串中存在的字段确定。按优先顺序:…”)中指定,然后,该日期将被视为当前日期

由于提供的时钟值中缺少日期,时钟扫描将返回脚本运行的日期作为日期。您可以尝试使用值
2019
运行它,如果您在同一天运行,您将得到相同的结果


要避免这种情况,您可以添加日期。将
01
添加到值和
%d
添加到格式字符串应该不会太难。

谢谢,我想我应该更仔细地阅读文档。我在其他语言中也这样做过,但似乎没有这个限制,所以我没想到Tcl会有这个限制。@Jonjilla是的,我也有点惊讶。这感觉特别特别。当我尝试改变年份时,我意识到发生了什么,但它总是给我相同的结果,而你的结果不同,那就是我将结果格式化为包含日期,并且都是今天的日期。谢谢,我想我应该更仔细地阅读文档。我在其他语言中也这样做过,但似乎没有这个限制,所以我没想到Tcl会有这个限制。@Jonjilla是的,我也有点惊讶。这感觉特别特别。当我尝试改变年份时,我意识到发生了什么,但它总是给我相同的结果,而你的结果则不同,那就是我将结果格式化为包含日期,并且都是今天的日期。