我需要在perl中获得今天的ISO 8601周数。
以下代码有什么问题?
#! /usr/bin/perl
use strict;
use warnings;
use Time::Local;
use POSIX qw(strftime);
my $weekNumber = POSIX::strftime("%V", localtime time);
print $weekNumber, "\n";
我得到的输出只是%V
而我的预期结果(对于纪元1407769639)是33
。
使用POSIX::strftime("%W", localtime time);
的FYI会产生32
。
答案 0 :(得分:4)
最好使用Time::Piece
,这是自Perl 5版本10以来的核心模块,因此除非您运行的是旧版本,否则不需要安装。
Time::Piece
将核心localtime
函数替换为返回Time::Piece
对象的函数,因此代码看起来像这样
use strict;
use warnings;
use Time::Piece;
print localtime->week, "\n";
<强>输出强>
33
答案 1 :(得分:3)
POSIX功能是C库上的薄层。你得到的是基于你的C库的行为。您得到%V
,因为您的C库strftime
无法识别%V
。