PHP求日期函数公式,php中关于时间计算的常用方法

本文分享如何在PHP中高效计算月初时间戳、每月天数、末月时间、日期格式验证以及周排行等,涉及函数如strtotime、cal_days_in_month、date和内置函数的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在实际工作中经常会碰到时间的计算,电子商务系统的时候经常会碰到要月结的情况,可能就会涉及到月初时间和月末时间的计算。游戏系统每周要刷新数据,涉及到每周开始和结束时间的计算。 还有像诸如月排行、周排行、日排行都会涉及到相应的时间计算,下面分享一些自己总结出来的方法。

月初时间戳计算

月初的时间戳好计算,直接用date和strtotime函数就可以得到,date的时间格式除了年月为动态的外,其余天设置为01,小时分钟秒设置为00:00:00

/**

* 月初时间戳计算

*

* @param int $time 时间戳

* @return int 月初时间戳

*/

function getMonthStart($time) {

return strtotime(date("Y-m-01 00:00:00", $time));

}

每月有几天

计算每月有几天,通常会想到根据月份来进行计算,在计算2月份的时候还要判断是否为闰年。当然也可以通过php内置函数cal_days_in_month直接计算:

/**

* 计算每月有几天

*

* @param int $time 时间戳

* @return int

*/

function getMonthDay($time) {

return cal_days_in_month(CAL_GREGORIAN, date("m", $time), date("Y", $time));

}

也可以使用date(“t”, $time)来进行计算,使用内置的函数通常来说性能更快,bug更少。不过也可以了解一下其中的原理。

月末时间计算

月初时间戳加上每月的秒数,实际上就是上面两个方法的集合

$time = time();

$monthStart = strtotime(date("Y-m-01 00:00:00", $time));

$monthSecond = 86400 * cal_days_in_month(CAL_GREGORIAN, date("m", $time), date("Y", $time));

echo $monthStart + $monthSecond - 1;

判断时间格式是否正确

一般在前端都是让用户使用时间控件进行选择,但是服务端还是进行相应的校验比较严谨,比如2015-02-30就是不合法的时间。

/**

* 校验日期格式是否正确

*

* @param string $date 日期

* @param string $formats 需要检验的格式数组

* @return boolean

*/

function checkDateIsValid($date, $formats = array("Y-m-d", "Y/m/d")) {

$unixTime = strtotime($date);

if (!$unixTime) { //strtotime转换不对,日期格式显然不对。

return false;

}

//校验日期的有效性,只要满足其中一个格式就OK

foreach ($formats as $format) {

if (date($format, $unixTime) == $date) {

return true;

}

}

return false;

}

微秒计算

date函数只能取到秒,如果要精确到微秒级别可以使用microtime函数

//本例输出182947

echo getMicroSecond(true);

/**

* 获取当前微秒数

*

* @param bool $isWithLeadingZeros 是否需要补齐前导0

* @return string

*/

function getMicroSecond($isWithLeadingZeros = false) {

$microTime = microtime();

$a = explode(" ", $microTime);

$microSecond = $a[0] * 1000000;

if ($isWithLeadingZeros) {

while (strlen($microSecond) < 6) {

$microSecond = "0" . $microSecond;

}

}

return $microSecond;

}

计算今天是本周的第几天

php的内置函数date非常强大,除了格式化时间显示外,还可以通过各种参数获取不用的时间数据,例如可以通过W获取本周是今年的第几周,z参数获取今天是今年的第几天,N参数获取今天是本周的第几天

date_default_timezone_set("Asia/Shanghai");

//获取本周是今年的第几周

echo date("W");

echo "
";

//获取今天是今年的第几天

echo date("z");

echo "
";

//获取今天是本周的第几天

echo date("N");

echo "
";

date加上时间戳参数后就可以获取时间戳对应的一些信息,功能蛮强大的。知道今天是本周的第几天,就可以很容易的计算出本周的开始时间了,然后就可以高一些周排行之类的数据了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值