Chinaunix首页 | 论坛 | 博客
  • 博客访问: 28286
  • 博文数量: 6
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 112
  • 用 户 组: 普通用户
  • 注册时间: 2013-11-24 18:36
文章分类

全部博文(6)

文章存档

2013年(6)

我的朋友

分类: 其他平台

2013-11-28 14:58:33

两个时间点字符串,像这样:2013-06-21,怎么计算相距多少天呢?


有两种办法。


DateTime 模块
use DateTime;
use List::MoreUtils qw(zip);
use Data::Dumper;
print Dumper(
    DateTime->new( zip @{ [qw/year month day/] },
        @{ [ split /-/, '2013-06-21' ] } )->subtract_datetime(
        DateTime->new(
            zip @{ [qw/year month day/] },
            @{ [ split /-/, '2012-05-20' ] }
        )
        )->deltas
);
缺点是 DateTime::Duration 的 days() 只能返回进位 months() 之后剩余的天数。所以这里只能输出整个 deltas() 来看。


timestamp 时间戳
use DateTime;
use List::MoreUtils qw(zip);
use Data::Dumper;
print Dumper(
    DateTime->new( zip @{ [qw/year month day/] },
        @{ [ split /-/, '2013-06-21' ] } )->subtract_datetime(
        DateTime->new(
            zip @{ [qw/year month day/] },
            @{ [ split /-/, '2012-05-20' ] }
        )
        )->deltas
);
use POSIX qw(mktime);


sub trans {
    my @str = split /-/, shift;
    mktime( 0, 0, 0, $str[2], $str[1] - 1, $str[0] - 1900, );
}
my $dt1 = trans('1999-05-21');
my $dt2 = trans('2013-06-26');
print( ( $dt2 - $dt1 ) / ( 60 * 60 * 24 ) );
这里就是要注意,mktime 里的 month 是以 0 开始的,year 是从 1900 开始的。

mjnx.youku08.com
ejw3.youku08.com
uenx.youku08.com
frlu.youku08.com
cls6.youku08.com
mkxu.youku08.com
jg85.youku08.com
bju1.youku08.com
vlg5.youku08.com
oheg.youku08.com
qc4a.west186.com
wiqg.west186.com
x6q0.west186.com
ko59.west186.com
3p12.west186.com
b7du.west186.com
goop.west186.com
ithe.west186.com
1m6o.west186.com
1jju.west186.com
elgo.34flash.com
5krd.34flash.com
56x0.34flash.com
b8bs.34flash.com
fhkd.34flash.com
70q3.34flash.com
ax07.34flash.com
6qcp.34flash.com
5k4d.34flash.com
2cd6.34flash.com
flig.ba029.com
0r74.ba029.com
t0kj.ba029.com
1v0j.ba029.com
r6ev.ba029.com
0a09.ba029.com
kvb0.ba029.com
usq0.ba029.com
0jap.ba029.com
p0bf.ba029.com
42an.sokecanada.com
j0ms.sokecanada.com
eo0h.sokecanada.com
wadm.sokecanada.com
2lh2.sokecanada.com
tggq.sokecanada.com
27o5.sokecanada.com
g6g2.sokecanada.com
mk54.sokecanada.com
2xr7.sokecanada.com
khjh.17hainan.com
c6hk.17hainan.com
bc6k.17hainan.com
aood.17hainan.com
xd6r.17hainan.com
w1f1.17hainan.com
uvlh.17hainan.com
vxsu.17hainan.com
hc6f.17hainan.com
7b4a.17hainan.com




阅读(2064) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~