gpt4 book ai didi

perl - 比较两个 Time::Piece 对象

转载 作者:行者123 更新时间:2023-12-05 07:21:32 27 4
gpt4 key购买 nike

我试验了 Time::Piece 和 Time::Seconds 包并编写了以下脚本来比较两个 Time::Piece 对象。我要做的是确定当前时间是在一天中的特定时间之前还是之后。在这种情况下,我将具体时间设置为 10:30:00。

我打印了两个 Time::Piece 值,看起来代码应该可以工作,但结果不是我所期望的。

有人能看出我的代码有什么问题吗?

use strict;
use warnings;
use Time::Piece;
use Time::Seconds;

my $settDate;
my $time = Time::Piece->new;
my $eod = Time::Piece->strptime($time->date . "T10:30:00", '%Y-%m- %dT%H:%M:%S');
print "Time is: ${time}, EOD is: ${eod}\n";
if ($time > $eod) {
print "Yes, we've passed EOD.\n";
$settDate = $time->strftime('%Y/%m/%d');
} else {
print "No, we haven't passed EOD yet\n";
$settDate = ($time - ONE_DAY)->strftime('%Y/%m/%d');
}
print "Default date is: ${settDate}\n";

输出显示:

Time is: Wed Jul  3 15:44:26 2019, EOD is: Wed Jul  3 10:30:00 2019
No, we haven't passed EOD yet
Default date is: 2019/07/02

最佳答案

意外的比较结果可能是由于 $time$eod 中的不同时区偏移 - Time::Piece->new 生成本地时间,而 Time::Piece->strptime 生成 UTC。
最简单的解决方法是始终使用 UTC:将 Time::Piece->new 替换为 Time::Piece->gmtime

关于perl - 比较两个 Time::Piece 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56863816/

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