我是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 "$s\n"; 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";
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。