strtotime("+1 month", $strtimes) 导致时间戳错误


如果要获取当前时间中未来一个自然月的这个linux时间戳时

 

使用  $nexttime = strtotime("+1 month", $strtimes); 是不精确的,尤其$strtimes无效时。

 

因为PHP “+1 month” 默认是30天,strtotime “+1 month”大月31、小月30、2月是28因此会导致时间戳错误

 

要使用

$nexttime =mktime(date("H"),date("i"),date("s"),date("m")+1,date("d"),date("Y"));

 

如果说时间是2013-02-29(此时间的linux值实现为2013-03-01),而需要逻辑处理后是2013-03-29;所以需要做加一个月处理,万一在处理时间的时候是 strtotime("+1 month",strtotime("2013-02-29"))的方法;得出的时间是:2013-04-01;因此会导致一系列的时间相减为负数。

 

注:别说 2013-02-29 是不存在,这全世界人民都知道,可有时候程序中会存在的。

 

实例:

$str1 = strtotime("2013-02-29 14:35:59");

echo (time() - strtotime("+1 month",$str1))/(24*3600);  //为负

$nexttime =mktime(date("H",14),date("i",35),date("s",59),date("m",02)+1,date("d",29),date("Y",2013));

echo (time() - $nexttime)/(24*3600);  //为正

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值