将此时间格式“ 2019-02-28T08:42:57 + 0000”转换为Perl中的YYYY-MM-DD格式

时间:2019-02-28 10:03:31

标签: perl date time

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

4 个答案:

答案 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;