Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl POSIX返回错误年份_Perl_Posix - Fatal编程技术网

Perl POSIX返回错误年份

Perl POSIX返回错误年份,perl,posix,Perl,Posix,我有密码: use POSIX qw( strftime ); print POSIX::strftime("%a, %d %b %G %T-0000",localtime(1325427034)); 哪个应该输出 Sun, 01 Jan 2012 09:10:34-0000 但相反,它输出 Sun, 01 Jan 2011 09:10:34-0000 在我做的一些测试中,它似乎发生在2010年、2011年或2012年的前几天。它在所有其他情况下都能正常工作,包括2013年和2014年的前

我有密码:

use POSIX qw( strftime );
print POSIX::strftime("%a, %d %b %G %T-0000",localtime(1325427034));
哪个应该输出

Sun, 01 Jan 2012 09:10:34-0000
但相反,它输出

Sun, 01 Jan 2011 09:10:34-0000

在我做的一些测试中,它似乎发生在2010年、2011年或2012年的前几天。它在所有其他情况下都能正常工作,包括2013年和2014年的前几天。有什么我应该做的不同吗?

%G
受标准约束

有关这些参数和其他参数的详细信息,请参阅系统的strftime()手册页

%G以世纪为十进制数字的ISO 8601周为基础的年份(见注释)。对应于ISO周数的4位年份(参见%V)。这有 与%Y的格式和值相同,但如果ISO周数属于上一年或下一年,则使用该年。(TZ)


您想要的是%Y,而不是%G。%G与%V一起使用,以显示ISO 8601周的编号,这些编号可能在年初之前开始,也可能在年末之后结束

例如:

use POSIX 'strftime';
print strftime("%Y-%m-%d week %G-%V\n",0,0,0,$_,11,111) for 25..31;
print strftime("%Y-%m-%d week %G-%V\n",0,0,0,$_,0,112) for 1..9;
输出:

2011-12-25 week 2011-51
2011-12-26 week 2011-52
2011-12-27 week 2011-52
2011-12-28 week 2011-52
2011-12-29 week 2011-52
2011-12-30 week 2011-52
2011-12-31 week 2011-52
2012-01-01 week 2011-52
2012-01-02 week 2012-01
2012-01-03 week 2012-01
2012-01-04 week 2012-01
2012-01-05 week 2012-01
2012-01-06 week 2012-01
2012-01-07 week 2012-01
2012-01-08 week 2012-01
2012-01-09 week 2012-02

愚蠢的ISO 8601。谢谢将其更改为%Y修复了它!
2011-12-25 week 2011-51
2011-12-26 week 2011-52
2011-12-27 week 2011-52
2011-12-28 week 2011-52
2011-12-29 week 2011-52
2011-12-30 week 2011-52
2011-12-31 week 2011-52
2012-01-01 week 2011-52
2012-01-02 week 2012-01
2012-01-03 week 2012-01
2012-01-04 week 2012-01
2012-01-05 week 2012-01
2012-01-06 week 2012-01
2012-01-07 week 2012-01
2012-01-08 week 2012-01
2012-01-09 week 2012-02