📅  最后修改于: 2023-12-03 15:40:09.142000             🧑  作者: Mango
日期时间在任何实际的应用程序中都是非常重要的。Laravel提供了许多内置函数来处理、格式化和操作日期时间。本文将介绍如何在Laravel中使用日期时间。
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对象。下面是一些示例:
$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(); // 转换为纽约时区
除了Carbon之外,您还可以使用PHP内置的DateTime类来处理日期时间。在Laravel中,您可以使用facade类来轻松使用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类和时间戳来处理日期时间。