我想转换以下时间格式- 在Perl中将“ 2019-02-28T08:42:57 + 0000”转换为YYYY-MM-DD格式
答案 0 :(得分:2)
这里不需要日期模块。所需的格式包含在您拥有的格式中。您只需要做substr
。 ISO 8601日期始终为10个字符长,您可以从前面开始。
print substr $date, 0, 10;
答案 1 :(得分:1)
使用Date::Manip:
#!/usr/bin/perl
use warnings;
use strict;
use Date::Manip:.Date;
my $date = new Date::Manip::Date;
$date->parse("2019-02-28T08:42:57+0000")
and die "parse" . $date->err() . "\n";
print $date->printf("%Y-%m-%d\n");
exit 0;
试运行:
$ perl dummy.pl
2019-02-28
注意:日期和时间解析是一个复杂的主题。所以请
答案 2 :(得分:1)
在这种情况下,最简单的解决方案(如simbabque所指出的)只是将日期视为字符串。除了提供给您的 "jest": {
"preset": "react-native",
"transformIgnorePatterns": [
"node_modules/(?!(react-native|static-container|expo|@expo|react-navigation))"
]
},
解决方案之外,您还可以使用正则表达式删除“ T”及其后面的所有内容。
substr()
如果您真的想解析和重新格式化日期,那么Time::Piece自2007年以来就已包含在标准Perl发行版中。
$date =~ s/T.*$//;
要处理更复杂的日期和时间(这里不需要,但是为了完整起见,我将其包括在内),您应该阅读DateTime及其朋友。
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');
答案 3 :(得分:0)
请尝试一下:
use Date::Parse qw(str2time);
use Date::Format qw(time2str);
my $string = '2019-02-28T08:42:57+0000';
my $time = str2time($string);
my $date = time2str("%Y-%m-%d %H:%M:%S", $time);
print $date;