php 批量处理时间,php 时间处理

本文探讨了如何改进PHP函数以灵活获取给定日期的上个月第一天和上个月倒数第二天,避免日期错误,并引入mktime()函数实现自动边界校正。作者通过实例展示了如何解决1月和连续月份的问题,以及如何利用mktime()进行高效日期运算。
摘要由CSDN通过智能技术生成

在网上看了下如何获取给定日期的上个月第一天下个月第一天之类的PHP自定义函数。大多类似下面这种

function GetPurMonth($date){//获取指定日期上个月的第一天和最后一天

$time=strtotime($date);

$firstday=date('Y-m-01',strtotime(date('Y',$time).'-'.(date('m',$time)-1).'-01'));

$lastday=date('Y-m-d',strtotime("$firstday +1 month -1 day"));

return array($firstday,$lastday);

}

问题出现了。比如获取第一天,上面这种使用(date('m',$time)-1);万一要是获取给定日期的上上个月呢。难道要直接减2?那万一要是给定的日期是1月份呢。难道最终会成为 date('Y-m-01', strtotime('2012--1-01')) ?????这明显是个错误 的时间格式。

所以这种函数不适合扩展使用。于是查询了下PHP函数库。找到了这个函数  mktime();

mktime()

定义和用法

mktime() 函数返回一个日期的 Unix 时间戳。

参数总是表示 GMT 日期,因此 is_dst 对结果没有影响。

参数可以从右到左依次空着,空着的参数会被设为相应的当前 GMT 值。

语法

mktime(hour,minute,second,month,day,year,is_dst)

可能这个大家还看不出来他的神奇。下面他给了一个例子:

mktime() 函数对于日期运算和验证非常有用。它可以自动校正越界的输入;

这是什么意思。自动校正越界输入。对头。我们就是要这个功能。下面看下实例

echo date('Y-m-d', strtotime('2012--2-1'));

echo '

';

echo date('Y-m-d', mktime(0,0,0,-2,1,2012));

我们想输出2012年1月1号前2个月的日期。即 2011年10月1号。看下这个的结果

1970-01-01

2011-10-01

果然:第一个函数出错了。显示了时间戳为0的时间。而第二个函数让我们得到了想要的时间。

阅读(1677) | 评论(0) | 转发(0) |

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值