Tcl 如何输入年和月?

Tcl 如何输入年和月?,tcl,Tcl,我正在尝试输入包含月份和年份的日期字符串,例如2000年1月 根据输入的%B(和%B)“匹配给定区域设置中的月份名称(缩写形式或完整形式,或任何形式的唯一前缀)”,但我无法做到这一点: % clock scan "January 2000" -format "%B %Y" 1475881200 % clock format 1475881200 -format "%B %Y" October 2016 在我看来,Tcl似乎不明白什么,

我正在尝试输入包含月份和年份的日期字符串,例如2000年1月

根据输入的%B(和%B)“匹配给定区域设置中的月份名称(缩写形式或完整形式,或任何形式的唯一前缀)”,但我无法做到这一点:

% clock scan "January 2000" -format "%B %Y"
1475881200
% clock format 1475881200 -format "%B %Y"
October 2016
在我看来,Tcl似乎不明白什么,并默认到今天的日期

我希望我的命令返回
946684800
,即
[时钟扫描2000-01-01-格式%Y-%M-%d]


[clock scan]
文档或我对文档的阅读有问题吗?

有趣的问题。似乎还需要指定一天

$ echo 'puts [clock format [clock scan "January 2000" -format "%B %Y"]]' | tclsh8.6
Sat Oct 08 00:00:00 EDT 2016

$ echo 'puts [clock format [clock scan "1 January 2000" -format "%d %B %Y"]]' | tclsh8.6
Sat Jan 01 00:00:00 EST 2000
我在文档()中看到了以

日期根据预处理格式字符串中的字段确定。按优先顺序:

  • 如果上述规则均未生成可用日期,则使用给定时区中的基准时间日期

  • 可能是在#3中,您希望匹配但不匹配。

    我可以看到同样的问题,但前提是我不指定月份的哪一天。如果我这样做了,事情就会成功:

    % clock scan "1 January 2000" -format "%d %B %Y"
    946684800
    % clock format 946684800
    Sat Jan 01 00:00:00 GMT 2000
    
    是的,我想这是一个bug(你可能应该在core.tcl-lang.org问题跟踪上报告它),添加一个(假的?)月日似乎是一个足够简单的解决方法。毕竟,如果没有它,解析器应该默认为每月的当前一天或第一天或其他某一天吗?什么是代表日?指定它,问题就会消失。

    “添加虚拟日”。非常感谢。我一定是失去了联系:-(。我在core.tcl-lang.org上找不到问题跟踪者。我同意,鉴于您提出的问题,最好还是保持现状,因此我很高兴看到这样一个问题很快得到解决。