如何在Perl中解析strftime格式的字符串?
发布时间:2020-12-15 23:21:32 所属栏目:大数据 来源:网络整理
导读:我是Perl的新手,我想知道strftime()是否有反函数. 看, use POSIX qw(strftime);print strftime("%YT%mT%d TTTT%H:%M:%S",localtime) 我得到:2009T08T14 TTTT00:37:02.我该如何进行对位操作?从“2009T08T14 TTTT00:37:02”字符串获取2009-08-14 00:37:0
我是Perl的新手,我想知道strftime()是否有反函数.
看, use POSIX qw(strftime); print strftime("%YT%mT%d TTTT%H:%M:%S",localtime) 我得到:2009T08T14 TTTT00:37:02.我该如何进行对位操作?从“2009T08T14 TTTT00:37:02”字符串获取2009-08-14 00:37:02,知道格式化字符串“%YT%mT%d TTTT%H:%M:%S”? 解决方法
一种选择是使用正则表达式解析数字,然后使用
Time::Local.但是,现在我理解你的问题是如何从strftime格式化字符串转换为一般时间,这种方法必然是麻烦的.
你在答案中提到POSIX :: strptime,如果你的平台支持它,那就太棒了.或者,您可以使用DateTime::Format::Strptime: #!/usr/bin/perl use strict; use warnings; use DateTime::Format::Strptime; use POSIX qw(strftime); my $f = "%YT%mT%d TTTT%H:%M:%S"; my $s = strftime($f,localtime); print "$sn"; my $Strp = DateTime::Format::Strptime->new( pattern => $f,locale => 'en_US',time_zone => 'US/Eastern',); my $dt = $Strp->parse_datetime($s); print $dt->epoch,"n"; print scalar localtime $dt->epoch,"n"; $dt是一个DateTime对象,所以你可以随心所欲地做任何事情. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |