2021-03-16 18:10:24
围观(6459)
在使用 PHP 的框架,例如 Laravel 的时候,使用 ORM 会有一些时间过滤的方法提供,但是如果进行更深入的定制服务开发,甚至需要写 SQL 的时候,就需要自行处理类似的时间字段。
所以博主写了一个时间处理的类。
众所周知,有一个非常强大的时间日期处理包:carbon
如果是想简单快捷粗暴,博主写的这个还是能用一下的。
直接上代码:
<?php /** * 时间及时间戳处理 */ class TimeHandle { /** * 获取 当天 或 当月指定某天 开始时间戳 * @return int * @param int $day */ public static function dayStartTime(int $day = 0) { if ($day == 0) { $day = date('d'); } return mktime(0, 0, 0, date('m'), $day, date('Y')); } /** * 获取 当天 或 当月指定某天 结束时间戳 * @return int * @param int $day */ public static function dayEndTime(int $day = 0) { if ($day == 0) { $day = date('d'); } $day++; return mktime(0, 0, 0, date('m'), $day, date('Y')) - 1; } /** * 获取 当月 开始时间戳 或 当年指定月份 开始时间戳 * @return int * @param int $month * @param string $type */ public static function monthStartTime(int $month = 0, string $type = 'start') { if ($month == 0) { $month = date('m'); } if ($type == 'start') { return mktime(0, 0, 0, $month, 1, date('Y')); } return mktime(23, 59, 59, $month, date('t'), date('Y')); } /** * 获取 当月 结束时间戳 或 当年指定月份 结束时间戳 * @return int * @param int $month */ public static function monthEndTime(int $month = 0) { return self::monthStartTime($month, 'end'); } /** * 获取当天开始时间 或 指定日期开始时间 或 指定月份开始时间 * @return string * @param $date * @param $format * @param $type */ public static function dayStart(string $date = '', string $format = 'Y-m-d H:i:s', string $type = 'start') { if (empty($date)) { $date = date('Y-m-d'); } $time = strtotime($date); if (!$time) { return false; } if ($type == 'start') { return date($format, $time); } $endTime = $time + ( 24 * 60 * 60 -1 ); return date($format, $endTime); } /** * 获取当天结束时间 或 指定日期结束时间 或 指定月份结束时间 * @return string * @param $date * @param $format */ public static function dayEnd(string $date = '', string $format = 'Y-m-d H:i:s') { if (empty($date)) { $date = date('Y-m-d'); } $lstDate = explode('-', $date); if (count($lstDate) < 3) { $date = $date . '-' . date('t', strtotime($date)); } return self::dayStart($date, $format, 'end'); } } $todayStartTime = TimeHandle::dayStartTime(); // 当天开始时间戳 也可以指定当前月的某天 例如 TimeHandle::dayStartTime(5); $todayEndTime = TimeHandle::dayEndTime(); // 当天结束时间戳 也可以指定当前月的某天 例如 TimeHandle::dayEndTime(5); $monthStart = TimeHandle::monthStartTime(); // 当月开始时间戳 也可以指定月份 例如 TimeHandle::monthStartTime(1); 还可以直接使用该方法获取当月结束时间 $monthEnd = TimeHandle::monthEndTime(); // 当月结束时间戳 也可以指定月份 例如 TimeHandle::monthEndTime(1); $todayStart = TimeHandle::dayStart(); // 当天开始时间 $specificDayStart = TimeHandle::dayStart('2021-02'); // 指定月份获取开始时间 也可以指定日期获取 例如 TimeHandle::dayStart('2021-02-05'); $todayEnd = TimeHandle::dayEnd(); // 当天结束时间 $specificDayEnd = TimeHandle::dayEnd('2021-02'); // 指定月份获取该月结束时间 也可以指定日期获取 当天结束时间 例如 TimeHandle::dayEnd('2021-02-05'); var_dump($todayStartTime); // int(1615564800) var_dump($todayEndTime); // int(1615651199) var_dump($monthStart); // int(1614528000) var_dump($monthEnd); // int(1617206399) var_dump($todayStart); // string(19) "2021-03-13 00:00:00" var_dump($specificDayStart); // string(19) "2021-02-01 00:00:00" var_dump($todayEnd); // string(19) "2021-03-13 23:59:59" var_dump($specificDayEnd); // string(19) "2021-02-28 23:59:59"
本文地址 : bubaijun.com/page.php?id=231
版权声明 : 未经允许禁止转载!
上一篇文章: Laravel 使用 MongoDB 数据库
下一篇文章: PHP开发节假日时间表