Perl:从预格式化的日期时间字符串中获取周数

Perl: Getting weeknumbers from pre-formatted date-time strings

我收到格式为“2021-04-25 04:27:35”(YYYY-MM-DD hh:mm:ss) 的日期时间字符串,需要将它们转换为“2021w18”。 我必须得到周数,我的 perl 脚本中已经有以下内容。

use Time::Piece;
use POSIX qw(strftime);

任何帮助都会帮助我超越“新手”。

这里有一个子例程可以执行您想要的操作:

use Time::Piece;
use POSIX qw(strftime);
use strict;
use warnings;
use feature 'say';
sub dateToWeek {
    my ($date) = @_;
    my $t = Time::Piece->strptime($date, "%Y-%m-%d %H:%M:%S");
    return $t->strftime("%Yw%U");
}
say dateToWeek("2021-04-25 04:27:35");

输出:

2021w17

向它传递一个包含在字符串中的日期,它将 return 年份 + “w” + 周数。 如果您需要它 return 2021w18 而不是 2021 年 4 月 25 日的 2021w17,请更改 return 语句以将 1 添加到 strftime,如下所示:

return $t->year . "w" . ($t->strftime("%U")+1);