日期及时间处理包 Carbon 在 Laravel 中的简单使用

Carbon—PHP中日期 / 时间处理,拿到这个扩展包就够了 在 PHP 中使用日期和时间并不是容易或清晰的任务。我们必须处理 strtotime ,格式化问题,大量计算等等。 这个漂亮的包叫做 Carbon 可以帮助在 PHP 开发中处理日期/时间变得更加简单、更语义化,从而使得我们的代码更容易阅读和维护。 Carbon Carbon 是由 Brian Nesbit 开发的一个包,它扩展了 PHP 自己的 DateTime 类。 它提供了一些很好的功能来处理 PHP 中的日期,特别是诸如: 处理时区 轻松获取当前时间 将 datetime 转换成可读的内容 阅读详情

在编写 PHP 应用时经常需要处理日期和时间,这篇文章带你了解一下 Carbon – 继承自 PHP DateTime 类的 API 扩展,它使得处理日期和时间更加简单。Laravel 中默认使用的时间处理类就是 Carbon。

1 安装

通过 Composer 来安装 Carbon:

composer require nesbot/carbon

PS:由于 Laravel 项目已默认安装了此包,所以不需要再次执行上面的命令。

2 使用

你需要通过命名空间导入 Carbon 来使用,而不需每次都提供完整的名称。

use Carbon\Carbon;

2.1 获取当前时间

可以同now() 方法获取当前的日期和时间。如果你不指定参数,它会使用 PHP 配置中的时区:

<?php
echo Carbon::now(); //2016-10-14 20:21:20
?>

如果你想使用一个不同的时区,你需要传递一个有效的时区作为参数:
除 now()外,还提供了today()、tomorrow()、yesterday()等静态函数,不过,它们的时间都是 00:00:00:

echo Carbon::now();                             // 2016-10-14 15:18:34
echo Carbon::today();                            // 2016-10-14 00:00:00
echo  Carbon::tomorrow('Europe/London');                          // 2016-10-14 00:00:00
echo Carbon::yesterday();                         // 2016-10-14 00:00:00

以上输出结果其实是一个 Carbon 类型的日期时间对象:

Carbon {#179 ▼
  +"date": "2016-06-14 00:00:00.000000"
  +"timezone_type": 3
  +"timezone": "UTC"
}

要想获取字符串类型的日期,可以使用下面的代码:

echo Carbon::today()->toDateTimeString();
echo Carbon::yesterday()->toDateTimeString();
echo Carbon::tomorrow()->toDateTimeString();

2.2 日期类型转为字符串

如上所述,默认情况下,Carbon 的方法返回的为一个日期时间对象。虽然它是一个对象,但是你却可以直接使用 echo 输出结果,因为有 __toString魔术方法。但是如果你想把它转为字符串,可以使用 toDateString 或 toDateTimeString 方法:

echo Carbon::now()->toDateString(); //2016-10-14
echo Carbon::now()->toDateTimeString(); //2016-10-14 20:22:50

2.3 日期解析

你还可以使用 parse方法解析任何顺序和类型的日期(结果为 Carbon 类型的日期时间对象):

echo Carbon::parse('2016-10-15')->toDateTimeString(); //2016-10-15 00:00:00
echo Carbon::parse('2016-10-15')->toDateTimeString(); //2016-10-15 00:00:00
echo Carbon::parse('2016-10-15 00:10:25')->toDateTimeString(); //2016-10-15 00:10:25

echo Carbon::parse('today')->toDateTimeString(); //2016-10-15 00:00:00
echo Carbon::parse('yesterday')->toDateTimeString(); //2016-10-14 00:00:00
echo Carbon::parse('tomorrow')->toDateTimeString(); //2016-10-16 00:00:00
echo Carbon::parse('2 days ago')->toDateTimeString(); //2016-10-13 20:49:53
echo Carbon::parse('+3 days')->toDateTimeString(); //2016-10-18 20:49:53
echo Carbon::parse('+2 weeks')->toDateTimeString(); //2016-10-29 20:49:53
echo Carbon::parse('+4 months')->toDateTimeString(); //2017-02-15 20:49:53
echo Carbon::parse('-1 year')->toDateTimeString(); //2015-10-15 20:49:53
echo Carbon::parse('next wednesday')->toDateTimeString(); //2016-10-19 00:00:00
echo Carbon::parse('last friday')->toDateTimeString(); //2016-10-14 00:00:00

2.4 构造日期

你还可以使用单独的年月日来构造日期:

$year = '2015';
$month = '04';
$day = '12';

echo Carbon::createFromDate($year, $month, $day); //2015-04-12 20:55:59

$hour = '02';
$minute = '15':
$second = '30';

echo Carbon::create($year, $month, $day, $hour, $minute, $second); //2015-04-12 02:15:30

echo Carbon::createFromDate(null, 12, 25);  // 年默认为当前年份

此外,还可以传递一个有效的时区作为最后一个参数。

2.5 日期操作

日期操作可以通过 add(增加)或 sub(减去)跟上要增加或减去的单位来完成。例如,你想给一个日期增加指定的天数,你可以使用 addDays方法。此外还提供了一个modify方法,参数格式为 +或 - 跟上值及单位。所以,如果你想给当前日期增加一年,你可以传递+1 year:

echo Carbon::now()->addDays(25); //2016-11-09 14:00:01
echo Carbon::now()->addWeeks(3); //2016-11-05 14:00:01
echo Carbon::now()->addHours(25); //2016-10-16 15:00:01
echo Carbon::now()->subHours(2); //2016-10-15 12:00:01
echo Carbon::now()->addHours(2)->addMinutes(12); //2016-10-15 16:12:01
echo Carbon::now()->modify('+15 days'); //2016-10-30 14:00:01
echo Carbon::now()->modify('-2 days'); //2016-10-13 14:00:01

2.6 日期比较

在 Carbon中你可以使用下面的方法来比较日期:

  • min –返回最小日期。
  • max – 返回最大日期。
  • eq – 判断两个日期是否相等。
  • gt – 判断第一个日期是否比第二个日期大。
  • lt – 判断第一个日期是否比第二个日期小。
  • gte – 判断第一个日期是否大于等于第二个日期。
  • lte – 判断第一个日期是否小于等于第二个日期。
echo Carbon::now()->tzName;                        // America/Toronto
$first = Carbon::create(2012, 9, 5, 23, 26, 11);
$second = Carbon::create(2012, 9, 5, 20, 26, 11, 'America/Vancouver');

echo $first->toDateTimeString();                   // 2012-09-05 23:26:11
echo $first->tzName;                               // America/Toronto
echo $second->toDateTimeString();                  // 2012-09-05 20:26:11
echo $second->tzName;                              // America/Vancouver

var_dump($first->eq($second));                     // bool(true)
var_dump($first->ne($second));                     // bool(false)
var_dump($first->gt($second));                     // bool(false)
var_dump($first->gte($second));                    // bool(true)
var_dump($first->lt($second));                     // bool(false)
var_dump($first->lte($second));                    // bool(true)

$first->setDateTime(2012, 1, 1, 0, 0, 0);
$second->setDateTime(2012, 1, 1, 0, 0, 0);         // Remember tz is 'America/Vancouver'

var_dump($first->eq($second));                     // bool(false)
var_dump($first->ne($second));                     // bool(true)
var_dump($first->gt($second));                     // bool(false)
var_dump($first->gte($second));                    // bool(false)
var_dump($first->lt($second));                     // bool(true)
var_dump($first->lte($second));                    // bool(true)

要判断一个日期是否介于两个日期之间,可以使用 between() 方法,第三个可选参数指定比较是否可以相等,默认为true:

$first = Carbon::create(2012, 9, 5, 1);
$second = Carbon::create(2012, 9, 5, 5);
var_dump(Carbon::create(2012, 9, 5, 3)->between($first, $second));          // bool(true)
var_dump(Carbon::create(2012, 9, 5, 5)->between($first, $second));          // bool(true)
var_dump(Carbon::create(2012, 9, 5, 5)->between($first, $second, false));   // bool(false)

此外还提供了一些辅助方法,你可以从它们的名字中明白其含义:

$dt = Carbon::now();

$dt->isWeekday();
$dt->isWeekend();
$dt->isYesterday();
$dt->isToday();
$dt->isTomorrow();
$dt->isFuture();
$dt->isPast();
$dt->isLeapYear();
$dt->isSameDay(Carbon::now());
$born = Carbon::createFromDate(1987, 4, 23);
$noCake = Carbon::createFromDate(2014, 9, 26);
$yesCake = Carbon::createFromDate(2014, 4, 23);
$overTheHill = Carbon::now()->subYears(50);
var_dump($born->isBirthday($noCake));              // bool(false)
var_dump($born->isBirthday($yesCake));             // bool(true)
var_dump($overTheHill->isBirthday());              // bool(true) -> default compare it to today!

2.7 diffForHumans

“一个月前”比“30 天前”更便于阅读,很多日期库都提供了这个常见的功能,日期被解析后,有下面四种可能性:

  • 当比较的时间超过当前默认时间
    • 1天前
    • 5月前
  • 当用将来的时间与当前默认时间比较
    • 1小时距现在
    • 5月距现在
  • 当比较的值超过另一个值
    • 1小时前
    • 5月前
  • 当比较的值在另一个值之后
    • 1小时后
    • 5月后

你可以把第二个参数设置为 true 来删除“前”、“距现在”等修饰语:diffForHumans(Carbon $other, true)。

echo Carbon::now()->subDays(5)->diffForHumans();               // 5天前

echo Carbon::now()->diffForHumans(Carbon::now()->subYear());   // 1年后

$dt = Carbon::createFromDate(2011, 8, 1);

echo $dt->diffForHumans($dt->copy()->addMonth());              // 1月前
echo $dt->diffForHumans($dt->copy()->subMonth());              // 11月后

echo Carbon::now()->addSeconds(5)->diffForHumans();            // 5秒距现在

echo Carbon::now()->subDays(24)->diffForHumans();              // 3周前
echo Carbon::now()->subDays(24)->diffForHumans(null, true);    // 3周

2.8 本地化

关于时间本地化,可以参考之前写的文章:《Laravel中Carbon时间格式本地化》https://9iphp.com/web/laravel/laravel-carbon-localization.html

更多详细用法,可以参考 Carbon 文档。http://carbon.nesbot.com/docs/

https://9iphp.com/web/laravel/php-datetime-package-carbon.html

Windows7 64位系统PL2303驱动无法安装问题解决 问题描述:电脑安装的是Win7 64位的旗舰版,USB to RS232这种线很简单,对于笔记本如果要用串口,就不能少了它了。USB to RS232转换芯片种类繁多,常见的有ch340,0108,PL2303,FT232等,这里面FT232的应该价格是相对比较贵的,因为FTDI的芯片本身比较贵。由于买了一根PL2303芯片的USB to RS232转换线,于是插上后发现驱动无法安装,又是在设备管 阅读详情

相关推荐

山东专升本计算机网络基础知识点 --- 计算机网络基础

计算机网络是指将一群具有独立\textcolor{WildStrawberry}{独立}独立功能的计算机通过通信设备及传输媒体等互联起来,在通信软件的支持下,实现计算机间资源共享、信息交换或协同工作\textcolor{WildStrawberry}{资源共享、信息交换或协同工作}资源共享、信息交换或协同工作的系统。计算机网络是计算机技术和通信技术紧密结合的产物\textcolor{WildStrawberry}{计算机网络是计算机技术和通信技术紧密结合的产物}

z339521的博客 2814

Laravel中七个重要的Carbon方法

前言大家应该都知道,我们在很多时候使用 Carbon 来处理日期和时间,对吗?但是又有多少人完整的阅读过文档了解它有那些方法呢?除了众所周知的 now() 和 format() 方法,Carbon 还有很多其他有用的方法。下面我们一起来看看吧。1. isX: True/False有很多方法来判断 Carbon 对象是否是今天、周末、闰年等等,下面这些是官方文档列出来的:<?php $dt-&...

lxw1844912514的博客 1932

【技术纵览】行为识别前沿模型演进:从CNN到多模态大模型

本文全面解析了行为识别技术从CNN到多模态大模型的演进历程,重点介绍了SlowFast、TimeSformer、VideoMAE和InternVideo等SOTA模型的核心创新与应用实践。通过对比分析各代模型在Kinetics-400等数据集上的表现,揭示了自监督学习和多模态融合如何推动行为识别准确率突破85%,并探讨了工业部署中的技术选型策略与优化方向。

weixin_29169505的博客 153

Carbon 在 Laravel 中的简单使用

在编写 PHP 应用时经常需要处理日期和时间,这篇文章带你了解一下 Carbon – 继承自 PHP DateTime 类的 API 扩展,它使得处理日期和时间更加简单。Laravel 中默认使用的时间处理类就是 Carbon。 <?php namespace Carbon; class Carbon extends \DateTime { // code here } 你可以在 Carbon 命名空间的 Carbon 类中看到上面声明的代码片段。 获取当前时间 可以同 n.

running8的博客 6223

学习笔记9--智能驾驶的功能安全设计之功能安全设计

本系列博客包括6个专栏,分别为:《自动驾驶技术概览》、《自动驾驶汽车平台技术基础》、《自动驾驶汽车定位技术》、《自动驾驶汽车环境感知》、《自动驾驶汽车决策与控制》、《自动驾驶系统设计及应用》。此专栏是关于《自动驾驶系统设计及应用》书籍的笔记.

FUXI_Willard 1794

Frida精准定位Shopee x-sap-ri动态签名生成函数

x-sap-ri是Shopee客户端生成的上下文感知型动态令牌,本质为基于设备标识、请求路径与毫秒级时间戳三元组的SHA256哈希值,经Base64编码后作为防重放与防批量伪造的核心校验字段。其生成逻辑深度混淆且跨Java/Native层,静态分析失效,而Frida凭借内存级函数调用拦截与JNI层穿透能力,成为唯一可行的技术路径。本文聚焦Frida在加固App中的实战适配——通过libcrypto.so API特征扫描反向定位被抹名的生成函数,实现对x-sap-ri输入参数(如16字节device_id加密

weixin_33978578的博客 610

Laravel中Carbon的使用

在做一个excel表导出的时候遇到一个问题,时间戳转换。 Laravel已经将这个封装好了,我们可以直接使用。 use Carbon\Carbon; 这个千万不要忘了引用。 在数据库中直接获取时间字段“data”, $data = Carbon::createFromTimeStamp($museum->data)->toDateTimeString(); //201...

Memory_wz0125的博客 834

(SCADA)监控与数据采集系统

SCADA应用于监控和采集数据来控制工业过程软件。它通过收集和传输实时数据,帮助操作员监视和控制各种设备和过程。

软件技术的专栏 4543

Laravel时间处理类Carbon

时间和日期处理是非常常见的任务。Carbon 是一个功能强大的 PHP 扩展包,它为我们提供了许多方便的方法来处理日期和时间。在 Laravel 中,你无需单独安装 Carbon,因为 Laravel 默认已经包含了它。如果你正在使用 Laravel,那么你已经可以直接使用 Carbon 了。

专注于Python编程技术的分享与交流,致力于帮助开发者提升编程技能,解决实际问题,探索Python的无限可能。 1711

GB 47955—2026 L2组合驾驶辅助强制国标全解、合规方案与工程代码落地

GB 47955—2026 L2辅助驾驶国标合规工程代码# 运行环境:Python3.8+,适配车载仿真、台架测试、算法验证场景# 依赖安装:pip install numpy dataclasses tqdm struct time json# ===================== 国标强制时序参数(完全对标GB 47955—2026) =====================HAND_OFF_FIRST_WARN = 5.0 # 手部脱离5s触发一级预警。

lin_xiu的博客 299

G120变频器抱闸逻辑在提升机上应用

一、前言: 对于提升机、起重机、堆垛机、升降机等提升机构,负载为位能性负载,在设备启动和停止阶段,由于重物作用,可能会出现“溜车”现象、控制变频器与电机抱闸时许可以解决此问题 使用具有矢量控制功能的变频器 二、参数设置 抱闸控制时序: 启动: 1、变频器接收到启动命令时-----输出电流对电机进行励磁,经过P346电机励磁时间(==丹佛斯 设置启动电流延时0.5S)------达到一定的转矩 2、变频器输出开抱闸命令,经过P1216延时打开抱闸时间(==PLC延时控制打开抱闸) 注意:抱闸

fenglingxicao的博客 1万+

php carbon 连续日期,日期及时间处理包 Carbon 在 Laravel 中的简单使用

在编写 PHP 应用时经常需要处理日期和时间,这篇文章带你了解一下 Carbon –继承自 PHP DateTime 类的 API 扩展,它使得处理日期和时间更加简单。Laravel 中默认使用的时间处理类就是 Carbon。namespace Carbon;class Carbon extends \DateTime{// code here}你可以在Carbon 命名空间的Carbon ...

weixin_42347699的博客 576

[Unity开发] [PICO]避坑指南:PICO商店上传APP时PXR Platform APPID设定详解

PICO开发者上传Unity应用时常见的"APPID不符"问题,主要源于混淆了开发者后台两个不同位置的APPID。

每日出拳老爷子的博客 556

日期及时间处理包 Carbon 的简单使用

在编写 PHP 应用时经常需要处理日期和时间,这篇文章带你了解一下 Carbon – 继承自 PHP DateTime 类的 API 扩展,它使得处理日期和时间更加简单。 1. 通过composer安装 版本环境要求: 1.x is compatible with PHP 5.3+. 2.x version requires PHP 7.1.8+. composer require nesbo...

Dev-Liangjian的博客 4846

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

laravel carbon 格式化日期_3分钟短文:Laravel Carbon自定义日期时间格式

引言laravel引用了强大的Carbon日期时间处理库用于日期时间的操作, 并且在数据库的格式化中使用该库。本文就说一说程序中如何方便地使用 Carbon自定义格式。学习时间只要成功安装了laravel的项目,已经内置了标准的carbon库文件,比如说在写入数据库字段 created_at 时是这样的格式:$item['created_at'] => "2020-08-28 19:18:4...

weixin_39930748的博客 2878

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

laravel中Carbon包的使用详解

介绍 Carbon是对PHP DateTime模块的二次扩展;提供时间格式化,时间计算的功能; 官方主页为http://carbon.nesbot.com/; Github地址为https://github.com/briannesbitt/Carbon; 文件结构 目录描述 -- src Carbon源文件 -- ...

weixin_30588675的博客 983

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Carbon与Laravel:打造完美的PHP时间处理解决方案

你是否还在为PHP中的日期时间处理而烦恼?是否觉得原生DateTime类功能有限、操作繁琐?本文将带你探索Carbon如何与Laravel框架无缝集成,通过简单直观的API解决所有时间处理难题。读完本文,你将能够轻松实现日期计算、本地化显示、时区转换等常见需求,让时间处理成为你项目中的亮点而非痛点。 ## 什么是Carbon? Carbon是一个简单但功能强大的PHP DateTime API...

gitblog_01156的博客 671

Laravel日期时间:国际化时间处理的Carbon集成

在现代Web应用开发中,日期时间处理是一项常见且关键的任务,尤其是在涉及国际化和用户体验的场景下。Laravel框架通过集成Carbon库,为开发者提供了强大而优雅的日期时间操作解决方案。本文将深入探讨Laravel中Carbon的集成方式、核心功能及国际化应用实践。 ## Carbon与Laravel的深度整合 Laravel框架对Carbon的集成并非简单的依赖引入,而是通过核心组件实现了...

gitblog_00048的博客 923

使用Carbon,在Laravel和PHP中更轻松的日期/时间

The Scotchmas Day 6 giveaway can be found at the end of this article. 在本文的末尾可以找到Scotchmas Day 6赠品。 Working with date and time in PHP is not the easiest or most clear of tasks. We have to deal with s...

culiu9261的博客 822

carbon 验证时间格式_laravel常用代码库:Carbon日期及时间处理包年月日操作完整版常用方法以及使用场景...

Carbon 是 DateTime 的简单 PHP API 扩展随着信息技术进步,我们发现时间戳并不满足我们的要求。日期时间会更多的被设计在数据库字段中。并且前端组件传递的也是 datetime 方便。官网地址:carbon.nesbot.com/安装通过 Composer 来安装 Carbon:composer require nesbot/carbonPS:由于 Laravel 项目...

weixin_35965648的博客 2416
上一篇: CSS中强大的EM
下一篇: 在学习PHP过程中收集的网站
gengfu_AI
博客等级 码龄9年 13粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值