我目前正在尝试解析CSV文件中的数据,该文件在第一列中的时间戳如下所示:
07/26/2014 00:23:09
我阅读了Time :: Piece的文档,我已经用它来解析其他类型的时间戳,而且这个时间样式的格式字符串似乎应该是“%D%T”。但是,当我尝试行
时$temp_time = Time::Piece->strptime($fields[0], "%D %T");
其中$ fields [0]是包含时间戳的字符串,执行时会收到此类警告:
garbage at end of string in strptime: 03:19:24 at /usr/local/lib64/perl5/Time/Piece.pm line 469, <$data> line 11933.
任何指针?我也试过“%m /%y /%d%H:%M:%S”,这似乎不起作用。
谢谢!
答案 0 :(得分:1)
%D
格式说明符相当于%m/%d/%y
,其中%y
(小写'y')是年没有世纪(即0-99) )。你使用的是四位数年份,因此无效。
相反,请使用
my $t = Time::Piece->strptime('07/26/2014 00:23:09', '%m/%d/%Y %T');
(请注意大写%Y
)
有关格式说明符的详情,请运行man strptime
,或查看FreeBSD manpage中链接的Time::Piece
documentation。
答案 1 :(得分:0)
您的第二个格式字符串的年份位于中间位置。
也许以下内容对您有所帮助:
use strict;
use warnings;
use Time::Piece;
my $str = '07/26/2014 03:19:24';
my $t = Time::Piece->strptime($str, "%m/%d/%Y %H:%M:%S");
print $t->strftime("%a, %d %b %Y"), "\n";
输出:
Sat, 26 Jul 2014
答案 2 :(得分:0)
我尝试使用以下的初始方式:
use strict;
use warnings;
use Time::Piece;
my $time = Time::Piece->strptime(
"07/26/2014 00:23:09",
"%m/%d/%Y %H:%M:%S");
print $time;