微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Perl中解析strftime格式的字符串?

我是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";

$dt是一个DateTime对象,所以你可以随心所欲地做任何事情.

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

相关推荐