作者gugod (opmsg.com)
看板Perl
标题Re: [问题] 日期的加减法?
时间Thu Aug 20 10:19:36 2009
※ 引述《tumc (HIHIHI)》之铭言:
: 请问大家,日期可以做加减法吗
: 比如如果我要固定得到 前天的日期
: 该如何得到呢?
: 因为不同的月有不同的天数,有又闰年的问题...
: 有没有模组可以处厘这个问题呢?
: 最好能有个函数是执行: 今日-2 = 前天
DateTime / DateTime::Tiny 这两个 CPAN 模组都是最正确的选择。
需要「甜」一点的话可以用 autobox::DateTime::Duration :
$d = 2->days->ago;
这样写法可以让 $d 是表示「两天前」的 DateTime 物件。
如果都不能用 CPAN 模组的话,自已手动减也很容易:
# 先取得 2 天前此时的 timestamp
$t = time - 86400 * 2;
# 直接印出来
print localtime($t);
# 只取年、月、日三个值
($mday, $month, $year) = (localtime($t))[3, 4, 5];
不过最麻烦的是时区处理,只要一有这个需要我一定直接用 DateTime。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 121.254.78.40