gpt4 book ai didi

perl - 如何在 Perl 中将跨多个时区的 unix 日期输出转换为 UTC?

转载 作者:行者123 更新时间:2023-12-04 16:49:30 26 4
gpt4 key购买 nike

在 Perl 中,如何有效地解析 unix 的 date 命令的输出,同时考虑时区,并转换为 UTC?

我在 stackoverflow 上阅读了许多类似的问题,但似乎很少考虑解析多个时区。相反,他们似乎手动设置时区并假设它保持固定。

# Example Input Strings:
my @inputs = (
'Tue Oct 12 06:31:48 EDT 2010',
'Tue Oct 12 07:49:54 BST 2010',
);

我尝试了以下方法无济于事:
foreach my $input ( @inputs ) {
my $t = Time::Piece->strptime( $input,
'%a %b %d %T %Z %Y' );
print $t->cdate, "\n";
}

似乎问题出在时区 (%Z) 上。此外,Time::Piece 中似乎不存在时区字段,这需要我编写自定义代码以转换为 UTC,这似乎是......错误。

语境:
我正在尝试从使用 unix date 命令获取时间戳的各种来源解析旧日志。理想情况下,我想将所有时间戳转换为 UTC。

任何帮助将不胜感激。

最佳答案

Perl 日期时间 FAQ on timezones 有很好的背景说明为什么 EDT 和 EST 不能用于大多数转换。问题是其他国家/地区也有一个东部时区,使用相同的 3 个字母缩写。 EST EDT 在没有其他线索的情况下是模棱两可的。

你可以看看 other modules ,或者假设“EDT”与“EST5EDT”相同,如果这是真的。

关于perl - 如何在 Perl 中将跨多个时区的 unix 日期输出转换为 UTC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3917606/

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