【问题标题】:How do I parse the JSON Date Format in Perl?如何在 Perl 中解析 JSON 日期格式?
【发布时间】:2014-01-25 09:17:24
【问题描述】:

如何解析我的 Web 服务在 Perl 中以 JSON 格式接收的日期格式?我想将其转换为 DateTime 对象:

Date(1216647000000-0400)

我假设它是从纪元开始的毫秒数以及时区偏移,但日期已经过时了。

【问题讨论】:

  • 日期过得怎么样?你能举一个 JSON 日期及其值的例子吗?

标签: perl json


【解决方案1】:

时间从纪元开始以毫秒为单位列出。除以 1000 得到纪元秒。

确保这适用于您遇到的其他情况:

use DateTime;

my $json_date = 'Date(1216647000000-0400)';
if ($json_date =~ m{ \b (\d+) \b ([+-]\d\d\d\d\b)? }x ) {
    my ( $epoch_milliseconds, $time_zone ) = ( $1, $2 );
    my $dt = DateTime->from_epoch( epoch => $epoch_milliseconds / 1000 );
    if ($time_zone) {
        $dt->set_time_zone($time_zone);
    }
    print $dt->datetime;
}

【讨论】:

  • \b 在 \d+ 和 [+-] 之间是多余的。我会删除第二个和第三个 \b 并在最后添加一个。
猜你喜欢
  • 1970-01-01
  • 2016-05-17
  • 1970-01-01
  • 2014-09-26
  • 2021-07-29
  • 2010-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多