首页 > 解决方案 > 在perl中将此时间格式“2019-02-28T08:42:57+0000”转换为YYYY-MM-DD格式

问题描述

我想在 perl 中将以下时间格式-“2019-02-28T08:42:57+0000”转换为 YYYY-MM-DD 格式

标签: perldatetime

解决方案


在这种情况下,最简单的解决方案(正如 simbabque 已经指出的那样)是将日期视为字符串。除了substr()您获得的解决方案外,您还可以使用正则表达式删除“T”及其后面的所有内容。

$date =~ s/T.*$//;

如果您真的想解析和重新格式化日期,那么Time::Piece自 2007 年以来就已包含在标准 Perl 发行版中。

use Time::Piece;

$date = '2019-02-28T08:42:57+0000';
my $tp = Time::Piece->strptime($date, '%Y-%m-%dT%H:%M:%S%z');
say $tp->strftime('%Y-%m-%d');

对于更复杂的日期和时间处理(此处不需要,但为了完整起见,我将其包括在内),您应该阅读DateTime及其朋友。

use DateTime;
use DateTime::Format::Strptime;

my $parser = DateTime::Format::Strptime->new(
  pattern => '%Y-%m-%dT%H:%M:%S%z',
);

my $date = '2019-02-28T08:42:57+0000';

my $dt = $parser->parse_datetime($date);

say $dt->strftime('%Y/%m/%d');

推荐阅读