Verta与Carbon完美结合:Laravel中Jalali日期双向转换的完整教程

📅 2026/8/17 22:34:58
Verta与Carbon完美结合:Laravel中Jalali日期双向转换的完整教程
Verta与Carbon完美结合Laravel中Jalali日期双向转换的完整教程【免费下载链接】vertaتبدیل تاریخ میلادی به شمسی برای لاراول و کار با تاریخ جلالی و اعتبارسنجی تاریخ项目地址: https://gitcode.com/gh_mirrors/ve/verta如果你正在开发面向伊朗或阿富汗用户的 Laravel 应用一定遇到过Jalali波斯历/伊朗历日期转换的烦恼。数据库里存的是公历页面要显示 Jalali用户提交的是 Jalali存库又要转回公历。今天介绍的Verta正是为解决这一痛点而生它是一个与Carbon完全兼容的 Laravel 日期扩展包让你用最少的代码实现 Jalali 与公历的双向转换、格式化、运算和表单验证。本教程将从零开始带你完整掌握这个优雅的日期工具。为什么需要 Jalali 日期转换Jalali又称波斯历、伊朗历是伊朗、阿富汗等国家通行的历法其年份、月份与公历差异很大。例如公历 2022-08-15 对应的 Jalali 日期是 1401-05-24。如果全靠手写换算逻辑既容易出错又难以维护而 Verta 把这一切封装成了开箱即用的 API。Verta 的核心设计理念是扩展 PHP 原生 DateTime 并兼容 Carbon你可以直接套用 Carbon 的使用习惯学习成本几乎为零。一键安装Composer 安装与 Laravel 自动集成Verta 的安装非常简单在项目根目录执行一条命令即可composer require hekmatinasser/verta安装完成后包会自动注册VertaServiceProvider见 src/Laravel/VertaServiceProvider.php并为你做好三件事注册verta容器绑定与门面src/Facades/Verta.php自动加载全局辅助函数verta()src/helpers.php为 Carbon 注入toJalali()宏让双向转换变得无比丝滑下表是 Verta 与 Laravel 版本的兼容对照按需选择即可Laravel 版本推荐包版本Laravel 8.08.0Laravel 9.08.2Laravel 10.08.3Laravel 11.08.4Laravel 12.08.5最快入门verta() 辅助函数Verta 提供全局辅助函数verta()不传参数即可获得当前时间的 Jalali 表示echo verta(); // 1401-05-24 00:00:00传入任意时间字符串则会自动完成公历到 Jalali 的换算——这就是你需要的第一个公历转伊朗历方法echo verta(2022-08-15); // 1401-05-24 00:00:00反向转换用 parse 把 Jalali 转回公历当你需要把 Jalali 日期转回公历使用Verta::parse()解析后再调用datetime()即可echo Verta::parse(1401-05-24 14:12:32)-datetime(); // 2022-08-15 00:00:00可以看到parse专门用于解析 Jalali 格式的字符串两条转换路径一目了然双向转换的核心能力就此打通。与 Carbon 无缝衔接双向转换实操很多 Laravel 项目已经重度依赖 CarbonVerta 没有让你二选一而是提供了完美的桥接方案。Carbon 转 Jalali一行 toJalali()得益于服务提供者注册的宏任何 Carbon 实例都可以直接调用toJalali()echo now()-toJalali(); // 1401-05-24 00:00:00Jalali 转 Carbon一行 toCarbon()反过来Verta 对象调用toCarbon()即可还原成 Carbon 实例实现见 src/Verta.php$carbon verta()-toCarbon(); // 2022-08-15 00:00:00这样一来你可以在业务逻辑里随意在 Carbon 与 Verta 之间切换查询条件、模型转换器、时间计算全都不受影响真正实现Laravel 中 Carbon 与 Jalali 的双向平滑切换。日期格式化让输出更贴合你的场景Verta 支持多种格式化方式满足展示层各种需求echo verta()-format(Y.m.d); // 1401.05.24 echo verta()-formatWord(l dS F); // 波斯语星期与月名 echo verta()-formatJalaliDatetime(); // 1395/10/07 14:12:25 echo verta()-formatJalaliDate(); // 1395/10/07常用格式化方法速查方法说明示例输出format($format)自定义格式1401.05.24formatJalaliDate()标准 Jalali 日期1395/10/07formatJalaliDatetime()标准 Jalali 日期时间1395/10/07 14:12:25formatDate()/formatTime()拆分的日期 / 时间1395-10-07 / 14:12:25formatDifference()人性化时间差1 年之前日期运算加减天、周、月、年做订阅到期、会员续费等业务时日期运算是刚需。Verta 提供了与 Carbon 同名的操作方法echo verta()-addWeeks(3); // 加 3 周 echo verta()-subMonths(2); // 减 2 个月 echo verta()-addDays(20); // 加 20 天 echo verta()-subYears(1); // 减 1 年对应的测试用例可在 tests/ModificationTest.php 中查看加月、减月都会自动处理 Jalali 月份天数差异无需手动判断。边界计算与时间比较想获取一天的开始/结束、一周的起点边界方法一次搞定echo verta()-startDay(); // 当天 00:00:00 echo verta()-endDay(); // 当天 23:59:59 echo verta()-startWeek(); // 本周开始比较操作同样齐全gt、gte、lt、lte、eq、ne一应俱全echo verta(2 day)-gte(2022-08-15); // 是否大于等于指定日期 echo verta(13 day)-diffMonths(2022-08-15); // 计算月份差Laravel 表单验证jdate 规则全家桶这是 Verta 最受 Laravel 开发者欢迎的特性——内置了完整的Jalali 日期验证规则。安装后无需额外配置验证规则直接可用$request-validate([ birthday [required, jdate, jdate_before_equal:1390-01-01], meeting [required, jdatetime_after:now], ]);常用规则一览规则作用jdate/jdatetime校验是否为合法的 Jalali 日期 / 日期时间jdate_before/jdate_after在指定日期之前 / 之后jdate_before_equal/jdate_after_equal不晚于 / 不早于指定日期jdate_equal/jdate_not_equal等于 / 不等于指定日期jdate_multi_format匹配多种日期格式校验逻辑集中在 src/Laravel/JalaliValidator.php错误消息还会自动替换为本地化的 Jalali 日期文本非常贴心。✨本地化多语言支持面向国际用户时可通过setLocale切换格式化语言如阿拉伯语Verta::setLocale(ar);配合formatWord()可以让星期、月份名称以目标语言输出用户体验更佳。写在最后从安装、双向转换到格式化、运算、验证、本地化Verta 用极简的 API 把Laravel 中的 Jalali 日期处理变成了一件轻松的事。它与 Carbon 的无缝兼容意味着你几乎不需要改造现有代码就能为应用加上完整的波斯历支持。如果你的项目正好需要处理伊朗历不妨马上安装体验让日期转换从此不再头疼【免费下载链接】vertaتبدیل تاریخ میلادی به شمسی برای لاراول و کار با تاریخ جلالی و اعتبارسنجی تاریخ项目地址: https://gitcode.com/gh_mirrors/ve/verta创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考