我正在尝试输入包含月份和年份的日期字符串,例如2000年1月。
根据man page,%B(和%b)“输入时,匹配给定语言环境中月份的名称(缩写或完整形式,或任一形式的任何唯一前缀)” ,但我无法做到这一点:
% clock scan "January 2000" -format "%B %Y"
1475881200
% clock format 1475881200 -format "%B %Y"
October 2016
在我看来,好像Tcl不理解某些事情并且默认为今天的日期。
我希望我的命令返回946684800
,[clock scan 2000-01-01 -format %Y-%M-%D]
[clock scan]
,文档或我对文档的阅读是否有问题?
答案 0 :(得分:1)
有趣的问题。您似乎还需要指定一天
$ 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
我在文档(http://tcl.tk/man/tcl8.6/TclCmd/clock.htm)中看到以
开头的部分日期根据预处理格式字符串中的字段确定。按优先顺序排列:
以
结尾
- 如果上述规则均未导致可用日期,则使用给定时区内的基准时间日期。
醇>
它可能在#3中,你期望匹配,但不是。
答案 1 :(得分:1)
我可以看到同样的问题,但前提是我没有指定月份的日期。如果我这样做,事情就会奏效:
% clock scan "1 January 2000" -format "%d %B %Y"
946684800
% clock format 946684800
Sat Jan 01 00:00:00 GMT 2000
虽然是的,但我认为这是一个错误(你可能应该在core.tcl-lang.org问题跟踪器上报告),在一个月的(假的?)日添加似乎是一个简单的解决方法。毕竟,没有它应该解析器默认为当前日期或第一天或其他一天?什么是代表日?指定它,问题就消失了。