欢迎访问宙启技术站
智能推送

PHP时间日期函数大全及应用场景

发布时间:2023-06-25 08:43:31

PHP时间日期函数非常丰富,可以帮助我们实现众多的时间日期处理操作。本文将为大家介绍一些常用的时间日期函数及其应用场景,并帮助大家更好地理解这些函数的用法。

一、时间日期的表示

在 PHP 中时间日期可以用多种方式表示。下面是一些常见的表示方法:

1. 时间戳

在 PHP 中,时间戳是一个表示当前时间的数字,它表示了自 1970 年 1 月 1 日 00:00:00 GMT 以来的秒数。我们可以使用 time() 函数获取当前时间戳,例如:$time = time();。

2. 字符串

我们可以使用 date() 函数将时间戳格式化为指定的字符串形式。例如:$str = date('Y-m-d H:i:s', $time);。

3. DateTime 对象

在 PHP 5.2 以后我们可以使用 DateTime 对象来进行时间日期的处理。例如:$dateTime = new DateTime('now');。

二、常用的时间日期函数

下面是一些常用的时间日期函数及其用法:

1. time()

time() 函数返回当前时间戳。例如:$time = time();。

2. date()

date() 函数可以将时间戳格式化为指定的字符串形式。例如:$str = date('Y-m-d H:i:s', $time);。

3. strtotime()

strtotime() 函数可以将字符串形式的日期转换为时间戳。例如:$time = strtotime('2021-08-01 12:00:00');。

4. mktime()

mktime() 函数可以根据指定的时间分量创建一个时间戳。例如:$time = mktime(12, 0, 0, 8, 1, 2021);。

5. strtotime() vs mktime()

strtotime() 和 mktime() 都可以从字符串或者数字中创建一个时间戳,但有一些区别。strtotime() 可以处理 “now”、“+1 day”、“next Monday” 等相对时间字符串,而 mktime() 只能处理数字格式的年、月、日、时、分、秒。

6. date_diff()

date_diff() 函数可以计算两个日期之间的差值。例如:

$datetime1 = new DateTime('2021-08-01 00:00:00');

$datetime2 = new DateTime('2021-08-02 00:00:00');

$interval = date_diff($datetime1, $datetime2);

echo $interval->format('%R%a days'); //输出:“+1 days”

7. strtotime vs DateTime

strtotime() 和 DateTime 都可以处理时间日期,但是其处理方式有一些不同。strtotime() 主要是对字符串的处理,返回一个时间戳。而 DateTime 是一个时间日期对象,可以对时间日期进行计算、比较等操作。例如:

$datetime1 = new DateTime('2021-08-01 00:00:00');

$datetime2 = new DateTime('2021-08-02 00:00:00'); 

echo $datetime1->diff($datetime2)->format('%R%a days'); //输出:“+1 days”

8. strtotime vs DateTime 的性能

由于 DateTime 对象是一个面向对象的结构,初始化和销毁的成本比 strtotime() 高。因此在大多数情况下,使用 strtotime() 会比 DateTime 更快。

三、应用场景举例

下面是一些常见的应用场景,涉及到时间日期的计算、比较等操作:

1. 判断两个时间是否相差1天

$date1 = date_create('2021-08-01');

$date2 = date_create('2021-08-02');

$diff = date_diff($date1, $date2);

if($diff->days == 1) {

    echo '相差1天';

} else {

    echo '不相差1天';

}

2. 获取当前时间戳

$time = time();

3. 获取当前时间

$datetime = new DateTime('now');

4. 获取当前日期

$date = new DateTime('today');

5. 获取当月的 天

$date = new DateTime('first day of this month');

6. 获取当年的 天

$date = new DateTime('first day of January this year');

7. 判断某个时间是否在指定时间段内

$start = new DateTime('2021-08-01');

$end = new DateTime('2021-08-31');

$now = new DateTime('now');

if(($now > $start) && ($now < $end)) {

    echo '在指定时间段内';

} else {

    echo '不在指定时间段内';

}

8. 计算两个时间的间隔

$datetime1 = new DateTime('2021-08-01 00:00:00');

$datetime2 = new DateTime('2021-08-02 00:00:00');

$interval = date_diff($datetime1, $datetime2);

echo $interval->format('%R%a days'); //输出:“+1 days”

9. 计算某个日期距离今天的天数

$date = date_create('2021-08-01');

$today = date_create('today');

$diff = date_diff($date, $today);

echo $diff->days;

10. 对时间进行加减操作

$date = new DateTime('2021-08-01');

$date->modify('+1 day');

echo $date->format('Y-m-d'); //输出:“2021-08-02”

综上所述,PHP时间日期函数非常丰富,我们可以根据实际需求来选择合适的函数进行处理。希望本文对大家有所帮助。