gpt4 book ai didi

perl - 如何使用 Perl 将本地时间转换为 YYYY-MM-DD

转载 作者:行者123 更新时间:2023-12-02 06:48:51 25 4
gpt4 key购买 nike

我有这段代码可以获取最近的星期五,无论当前日期是什么:

for(my $i = 1; $i < 8; $i++) {
my $t = time() + $i * 24 * 3600;
next unless (localtime($t))[6] == 5; # friday
$nextfri = scalar(localtime($t));
last;
}

这将以以下格式返回日期:Fri May 11 13:47:24 2018

但是,我必须将此日期用于 SQL 查询,因此我必须使用以下格式的日期:YYYY-MM-DD

我试过使用 Time::Piece:

 print STDERR "Time::Piece: " . Time::Piece->strptime("$nextfri", '%Y %m %d'), "\n";

但我收到此错误:Error parsing time at /usr/local/lib/perl/5.18.2/Time/Piece.pm line 481, <DATA> line 1.

如何更改日期格式?

最佳答案

使用POSIX::strftime将本地时间部分转换为格式化字符串。

use strict;
use warnings;

use POSIX qw{strftime};

my $nextfri;
for (my $i = 1; $i < 8; $i++) {
my @t = localtime(time() + $i * 24 * 3600);
next unless $t[6] == 5; # friday
$nextfri = strftime '%Y %m %d', @t;
last;
}

但我建议您使用类似 DateTime 的库相反,因为上面的代码错误地假设每天有 24 小时,因此可能会导致错误的结果。

use strict;
use warnings;

use DateTime;

my $nextfri = DateTime->now;
do {
$nextfri->add(days => 1);
} until ($nextfri->day_of_week == 5);

print $nextfri->ymd(' '); # or '-'

关于perl - 如何使用 Perl 将本地时间转换为 YYYY-MM-DD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50260968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com