不败君

前端萌新&初级后端攻城狮

PHP时间日期处理类开始时间及结束时间

PHP时间日期处理类开始时间及结束时间

2021-03-16 18:10:24

围观(3734)

在使用 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开发节假日时间表

评论:我要评论
发布评论:
Copyright © 不败君 粤ICP备18102917号-1

不败君

首 页 作 品 微 语