在 Perl 中转换时间戳

Converting timestamps in Perl

我希望转换如下所示的时间戳

2019-01-01T02:15:00+00:00

在 Perl 中进入澳大利亚东部标准时间。 我有超过 10,000 个这样的时间戳,非常感谢任何帮助 我需要将它们输入到格式为 YYYY-MM-DD hh:mm:ss

的 mysql 数据库中

您将使用标准的 Perl 模块 Time::Piece。它提供标准的 strptimestrftime 函数。第一个允许您使用模板解析时间戳,第二个输出基于同类模板的时间戳。要更改时区,您需要加上或减去秒数差异。

$t = Time::Piece->strptime("2020-11-04T01:46:00", "%Y-%m-%dT%H:%M:%S");
$t += $offset;
print $t->strftime("%Y-%m-%dT%H:%M:%S");

或者如果您的当前时间是当前语言环境并且您总是从 GMT 转换:

$t = Time::Piece->strptime("2020-11-04T01:46:00", "%Y-%m-%dT%H:%M:%S");
$l = localtime $t->epoch;
print $l->strftime("%Y-%m-%dT%H:%M:%S");

现在,如果您需要做比这更复杂的事情(夏令时、闰秒),可以使用 DateTime 模块,但相应地使用起来要复杂得多。

另见 How can I parse dates and convert time zones in Perl?

HTH