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

extracting clock seconds from yearmonth formatted string in Tcl

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

% set value "202001" 
% set clocktime [clock scan $value -format "%Y%m"]
1608537600

可以看到Tcl提取出纪元时间为1608537600

如您所见,这是不正确的。如果我将该值转换回字符串值,它返回为 2020 年 12 月

% clock format 1608537600 -format "%Y%m"
202012

我做错了什么?

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

由于提供的时钟值缺少日期,时钟扫描将 return 脚本 运行 的日期作为日期。您可以尝试 运行 将其与值 2019 结合起来,如果您在同一天进行,您将获得相同的结果。

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