我有日期范围(两个 UNIX 时间戳),我需要找到 23:59:59 的点(如果存在)。 我如何使用 Perl 来做到这一点?
附言我认为 for() 不是好主意,因为我可以有很大的范围。还有其他变体吗?
最佳答案
我会使用 Date::Calc
。假设您的两个时间戳位于 $ts1
和 $ts2
中:
use Date::Calc qw(Time_to_Date Date_to_Time Delta_Days Add_Delta_Days);
my @date1 = (Time_to_Date($ts1))[0..2];
my @date2 = (Time_to_Date($ts2))[0..2];
my @midnights;
for (my $i = 0; $i < Delta_Days(@date1, @date2); ++$i) {
push @midnights, Date_to_Time(Add_Delta_Days(@date1, $i), 23, 59, 59);
}
@midnights
现在包含两个给定时间戳之间所有 23:59:59 点的 UNIX 时间戳(纪元秒)。
免责声明:当然,您也可以使用DateTime
。
关于perl - 获取两个 UNIX 时间戳之间的日变化点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4440376/