从Tcl计算YearWeek

从Tcl计算YearWeek,tcl,Tcl,我正在尝试从日期字段正确计算工作年/周数 我尝试使用时钟格式命令,如下所示 % clock format [clock scan "2016.01.01" -format "%Y.%m.%d"] -format "%Y-WW%V" 2016-WW53 虽然周数是正确的,但这一年并非如此,因为在本例中,Jan1在第53周着陆,正如2016年一样。由于Tclclock format命令分别指定了周数和年份,因此2016年1月1日显示为2016-WW53,但应显示为2015-WW53 是否有用于此的

我正在尝试从日期字段正确计算工作年/周数

我尝试使用时钟格式命令,如下所示

% clock format [clock scan "2016.01.01" -format "%Y.%m.%d"] -format "%Y-WW%V"
2016-WW53
虽然周数是正确的,但这一年并非如此,因为在本例中,Jan1在第53周着陆,正如2016年一样。由于
Tcl
clock format命令分别指定了周数和年份,因此
2016年1月1日
显示为
2016-WW53
,但应显示为
2015-WW53


是否有用于此的内置函数,或者我是否需要使用if/then条件来正确选择年份?

只需使用修饰符
%G

clock format [clock scan "2016.01.01" -format "%Y.%m.%d"] -format "%G-WW%V"
输出:

2015-WW53
从手册中:

%G
在输出时,生成一个四位数的年份号,适合与基于周的ISO8601日历一起使用;也就是说,年数对应于%V生成的周数。在输入时,接受这样一个四位数的年数,可能带有前导空格


只需使用修饰符
%G

clock format [clock scan "2016.01.01" -format "%Y.%m.%d"] -format "%G-WW%V"
输出:

2015-WW53
从手册中:

%G
在输出时,生成一个四位数的年份号,适合与基于周的ISO8601日历一起使用;也就是说,年数对应于%V生成的周数。在输入时,接受这样一个四位数的年数,可能带有前导空格


谢谢我想我没有仔细阅读文档。谢谢!我想我没有仔细阅读文档。