2021-03-16 18:10:24
围观(8279)
在使用 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开发节假日时间表