使用perl中的POSIX :: strftime获取周数

时间:2014-08-11 14:39:59

标签: perl strftime

我需要在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

2 个答案:

答案 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