2014-05-15 25 views
2

可能是为TCL错误的原因是什么:执行时clock scan $Date无法转换时间串

% echo $tcl_version 
8.4 
% info patchlevel 
8.4.19 

看见几个建议升级到TCL 8.5,

Tcl Error: unable to convert date-time string "Wed May 14 05:20:15 RET 2014"

,但想知道8.4本身是否可以解决问题。

+1

RET是不是Tcl的认可子午线。您可能想要使用时区差异,例如'0400'作为'GMT + 0400'(至少,这似乎对我有用,但我使用了8.6)。你是来自留尼汪岛吗?我认为这是迄今为止我见过的最近的成员= P – Jerry

回答

0

你有语法问题。日期应该是“Wed May 14 05:20:15”。 例子:

set Date "Wed May 14 05:20:15" 
clock scan $Date 

,或者如果你有时间= “周三5月14日五时20分15秒RET 2014”,则:

clock scan "[lindex $Date 0] [lindex $Date 1] [lindex $Date 2] [lindex $Date 3]" 
+0

不,问题在于Tcl 8.4的时钟命令无法识别“RET”时区。请参阅https://en.wikipedia.org/wiki/List_of_time_zone_abbreviations –

1

这是篮下我认为Tcl的8.4让你通过跳: (在Tcl的8.3.3测试)

% set dt "Wed May 14 05:20:15 RET 2014" 
Wed May 14 05:20:15 RET 2014 
% regsub RET $dt "" dt_alt 
1 
% set offset +4 
+4 
% set epoch [clock scan "$offset hours" -base [clock scan $dt_alt -gmt 1]] 
1400026815 
% clock format $epoch -gmt 1 
Wed May 14 00:20:15 GMT 2014 

其中

  • 你必须删除从日期时间字符串“未知”时区,并
  • 你要知道,RET == GMT + 4

的Tcl 8.5仍然无法解析,准确的字符串:

% set dt "Wed May 14 05:20:15 RET 2014" 
Wed May 14 05:20:15 RET 2014 
% clock scan $dt 
unable to convert date-time string "Wed May 14 05:20:15 RET 2014": syntax error (characters 19-22) 

% set epoch [clock scan [string map {RET ""} $dt] -format {%a %b %d %T %Y} -timezone :Indian/Reunion] 
1400030415 
% clock format $epoch 
Tue May 13 21:20:15 EDT 2014 
% clock format $epoch -timezone :Indian/Reunion 
Wed May 14 05:20:15 RET 2014 
+0

我注意到时代不同。在那里有一个错误... –