📜  日期时间 laravel - PHP (1)

📅  最后修改于: 2023-12-03 15:40:09.142000             🧑  作者: Mango

日期时间 Laravel - PHP

简介

日期时间在任何实际的应用程序中都是非常重要的。Laravel提供了许多内置函数来处理、格式化和操作日期时间。本文将介绍如何在Laravel中使用日期时间。

Carbon

Carbon是Laravel的一个扩展,它允许我们简单地处理日期时间。Carbon被广泛使用,因为它具有易读的API,并扩展了原生的DateTime类,增加了一些很棒的功能。Carbon 的文档可以在官网上查看:https://carbon.nesbot.com/docs/

安装Carbon:在Laravel 8 及以上版本,Carbon是自动安装的。在低版本的Laravel中,您可以使用composer进行安装:

composer require nesbot/carbon

然后您需要在需要使用的地方导入Carbon。

use Carbon\Carbon;
创建Carbon实例

您可以通过使用对象实例化来创建一个Carbon对象。下面是一些示例:

$now = Carbon::now();
$tomorrow = Carbon::tomorrow();
$yesterday = Carbon::yesterday();
$date = Carbon::create(2022, 05, 29);
格式化日期时间

您可以使用format方法将Carbon对象格式化为所需的日期时间格式。下面是一些常用的模板:

| 模板 | 描述 | 示例 | | --- | --- | --- | | Y | 大写 Y 表示四位数的年份 | 2022 | | y | 小写 y 表示两位数的年份 | 22 | | m | 两位数的月份 | 05 | | M | 三个字母的月份 | May | | F | 完整的月份名 | May | | d | 两位数的日期 | 29 | | D | 三个字母的星期几 | Sun | | l | 完整的星期几名 | Sunday | | H | 24 小时制的小时数,带前导零 | 02 | | h | 12 小时制的小时数,带前导零 | 02 | | i | 带前导零的分钟数 | 03 | | s | 带前导零的秒数 | 06 | | a | 小写 a 表示上午或下午 | am | | A | 大写 A 表示上午或下午 | AM |

下面是一些示例代码:

$date = Carbon::create(2022, 05, 29, 14, 30, 00);
echo $date->format('Y-m-d H:i:s'); // 2022-05-29 14:30:00
echo $date->format('l, F jS Y, h:i a'); // Sunday, May 29th 2022, 02:30 pm
操作日期时间

您可以对Carbon对象执行各种日期时间运算。下面是一些示例:

$date = Carbon::now();
echo $date->addDays(7); // 增加7天
echo $date->subMonths(2); // 减少2月
转换时区

您可以使用tz方法将日期时间转换为另一个时区。下面是一些示例:

$date = Carbon::now(); // 当前本地时区
echo $date->tz('UTC')->toDateTimeString(); // 转换为UTC
echo $date->tz('America/New_York')->toDateTimeString(); // 转换为纽约时区
DateTime

除了Carbon之外,您还可以使用PHP内置的DateTime类来处理日期时间。在Laravel中,您可以使用facade类来轻松使用DateTime类。

创建DateTime实例

你可以使用对象实例化来创建DateTime对象。下面是一些示例:

$now = \Illuminate\Support\Facades\Date::now();
$tomorrow = \Illuminate\Support\Facades\Date::tomorrow();
$yesterday = \Illuminate\Support\Facades\Date::yesterday();
$date = new \DateTime('2022-05-29');
格式化日期时间

您可以使用format方法将DateTime对象格式化为所需的日期时间格式。使用的格式化字符串与Carbon相同。

$date = new DateTime('2022-05-29 14:30:00');
echo $date->format('Y-m-d H:i:s'); // 2022-05-29 14:30:00
echo $date->format('l, F jS Y, h:i a'); // Sunday, May 29th 2022, 02:30 pm
操作日期时间

您可以对DateTime对象执行各种日期时间运算。下面是一些示例:

$date = new DateTime('now');
$date->add(new DateInterval('P7D')); // 增加7天
$date->sub(new DateInterval('P2M')); // 减少2月
转换时区

您可以使用DateTimeZone类将日期时间转换为另一个时区。下面是一些示例:

$date = new \DateTime('now', new \DateTimeZone('Asia/Shanghai')); // 当前上海时区
$date->setTimezone(new \DateTimeZone('UTC')); // 转换为UTC
$date->setTimezone(new \DateTimeZone('America/New_York')); // 转换为纽约时区
时间戳

时戳是表示日期时间的常用类型之一。在Laravel中,您可以使用time()函数和date()函数来处理时间戳。

转换为时间戳

您可以使用time() 函数从日期时间获取时间戳。下面是一些示例:

echo time(); // 当前时间戳
echo strtotime('2022-05-29 14:30:00'); // 转换字符串为时间戳
$date = new DateTime('2022-05-29 14:30:00');
echo $date->getTimestamp(); // 获取日期时间对象的时间戳
转换为日期时间

您可以使用date()函数将时间戳转换为日期时间格式。使用的格式化字符串与Carbon相同。

echo date('Y-m-d H:i:s', time()); // 获取当前日期时间格式
echo date('Y-m-d H:i:s', strtotime('2022-05-29 14:30:00')); // 转换时间戳为日期时间格式
$date = new DateTime();
$date->setTimestamp(1653889800);
echo $date->format('Y-m-d H:i:s'); // 2022-05-29 14:30:00
结论

Laravel提供了多种处理、格式化和操作日期时间的方法。在开发过程中,您可以选择适用于您当前情况的方法。Carbon是Laravel中一种非常流行的日期时间处理扩展,它利用DateTime原生类,提供了许多方便的方法。您还可以使用PHP内置的DateTime类和时间戳来处理日期时间。