当前位置: 首页 > news >正文

Carbon:PHP 开发者的日期时间工具箱

文章目录

  • Carbon:PHP 开发者的日期时间工具箱

Carbon:PHP 开发者的日期时间工具箱

PHP 原生的 DateTime 类用起来总有些别扭,日期计算、格式转换、多语言支持每一项都要手动处理。Carbon 就是为了解决这些问题而生的。

Carbon 是一个基于 PHP DateTime 的扩展库,目前在 GitHub 上获得了 16,616 个 Star。它在原生 DateTime 的基础上,提供了更简洁的 API 来完成日期的创建、解析、计算和格式化。

用 Composer 安装一行命令搞定:

composer require nesbot/carbon

安装完成后,代码里直接引入就能用。几个常见的使用场景:

useCarbon\Carbon;// 获取当前时间echoCarbon::now()->toDateTimeString();// 日期加减$tomorrow=Carbon::now()->addDay();$lastWeek=Carbon::now()->subWeek();// 计算年龄$age=Carbon::createFromDate(1975,5,21)->age;// 判断是否周末if(Carbon::now()->isWeekend()){echo'今天休息';}

API 的设计思路很清晰,方法名就是自然语言的表达,读代码和读句子差不多。

Carbon 内置了 200 多种语言的支持,包括 500 多种地区变体。一行代码就能切换显示语言:

echoCarbon::now()->subMinutes(2)->diffForHumans();// '2 minutes ago'echoCarbon::now()->subMinutes(2)->locale('zh_CN')->diffForHumans();// '2分钟前'echoCarbon::parse('2019-07-23 14:51')->isoFormat('LLLL');// 'Tuesday, July 23, 2019 2:51 PM'

对于需要国际化展示时间的项目,这个功能省去了大量手动翻译的工作。

测试方面,Carbon 提供了 setTestNow 方法来模拟固定时间点,方便单元测试中控制日期相关的逻辑:

Carbon::setTestNow(Carbon::createFromDate(2000,1,1));// 后续所有 Carbon::now() 都返回 2000-01-01// 测试完毕后恢复Carbon::setTestNow();

这个设计避免了测试中因为系统时间变化导致的不确定性。

日期差值计算也是常用功能,Carbon 支持天、小时、分钟等多个维度的精确计算:

$daysSinceEpoch=Carbon::createFromTimestamp(0)->diffInDays();

Carbon 目前正从 briannesbitt/Carbon 迁移到 CarbonPHP/carbon 仓库,代码在两个仓库保持同步更新,使用上没有影响。

项目文档完整,社区活跃,贡献者和翻译者都在持续维护。如果你的 PHP 项目里还在用原生 DateTime 手动拼日期逻辑,可以试试 Carbon。

档完整,社区活跃,贡献者和翻译者都在持续维护。如果你的 PHP 项目里还在用原生 DateTime 手动拼日期逻辑,可以试试 Carbon。

http://www.cnnetsun.cn/news/2989926.html

相关文章:

  • Windows系统文件danim.dll丢失找不到问题解决
  • OpenClaw:Android终端号码显示层隐私保护SDK原理与实践
  • Spring AI入门:Java开发者的大模型集成实践指南
  • 直流母线电压恢复的二次控制策略 直流微网中采用虚拟压降补偿 并联双向Buck-boost研究(Simulink仿真实现)
  • 本地部署大模型接入业务系统:硬件适配、API契约与RAG集成实战
  • 智能告警降噪:从告警洪流到精准触达的算法与工程实践
  • 手搓Claude Code式AI Agent:可审计、可隔离、可进化的智能工作流
  • Claude Code本地部署实战:vLLM+llama.cpp双后端配置指南
  • QKeyMapper坐标映射:三步实现屏幕精准点击,告别重复操作烦恼
  • 豆包在抖音生态中的实战应用场景大纲
  • PowerPC e600指令时序与流水线优化实战指南
  • 如何免费升级旧Mac:OpenCore Legacy Patcher终极完整指南
  • 如何用TV Bro智能电视浏览器彻底改变你的大屏上网体验:终极指南
  • 2026年度华南地区办公室家具市场趋势分析:五大品牌评测与采购要点
  • 无名杀:开源三国杀网页版终极体验指南
  • 如何用Video2X将低清视频无损放大到4K:免费AI视频增强完整指南
  • Vortex模组管理器终极指南:让游戏模组管理变得简单而高效
  • 2026年腾讯云 618 活动介绍及 Hermes Agent/OpenClaw配置Token Plan搭建新手友好
  • 同态加密神经网络推理优化:从算法轻量化到GPU加速的高并发实践
  • uni-app 跨平台开发从入门到精通:原理剖析、工程实战与性能优化全指南
  • AMD Ryzen调试利器:SMU Debug Tool完全指南与实战应用
  • 实战指南:3步掌握Python金融数据分析的高效免费工具MOOTDX
  • ArkUI 轮播图,选项卡,视频,图片组件全解 1
  • 450+终端配色方案:从视觉疲劳到高效愉悦的蜕变之旅
  • FairNVT:基于噪声注入与子空间学习的Transformer公平性增强框架详解
  • 搭建完整的Agent系统:Function Calling与工具调用实战
  • SVGcode:3步将位图转换为高清矢量图的完整指南
  • 大模型代码评估中的偏见:权威性、冗长度与思维链效应解析
  • 锂离子电池DFN模型降阶解析:从物理机理到BMS嵌入式应用
  • 构建生产级RAG系统实践:从原型到高可用问答引擎