加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何在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对象,所以你可以随心所欲地做任何事情.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读