m-jch / date
修复所有 php 中的日期需求
v1.1.3
2019-06-09 07:17 UTC
README
修复所有 php 中的日期需求
安装
将以下行添加到 require
部分中的 composer.json
"m-jch/date" : "~1"
运行 composer update
教程
本包包含 2 个类,分别是 Jalali
和 Date
。其中 Jalali
类负责贾拉利(太阳历)日期时间,而 Date
类负责公历日期时间。
以下所有示例均应在 Jalali
或 Date
类中运行。
PHP date
函数中列出的所有格式都支持。
我们希望实现 Carbon PHP 类的大部分功能。
包含类
use Date\Date; use Date\Jalali;
示例
创建者
$date = new Jalali('1395/04/10 23:10:05'); $date = new Jalali('۱۳۹۵/۰۴/۱۰ ۲۳:۱۰:۰۵'); $date->format('Y-m-d H:i:s'); echo new Jalali('1395-04-10'); // You can use make static method instead of new instance // Below examples has same results $date = (new Jalali('1395/04/10 23:10:05'))->subDays(4); $date = Jalali::make('1395/04/10 23:10:05')->subDays(4); echo Jalali::now(); echo Jalali::yesterday(); echo Jalali::tomorrow(); echo Jalali::create(1394, 05, 04, 12, 45, 23); echo Jalali::createDate(1394, 05, 04); echo Jalali::createTime(12, 45, 23);
转换器
// Jalali to Gregorian $date = new Jalali('1373/06/05 23:10:05'); echo $date->toGregorian(); $date = new Jalali('1373/06/05 23:10:05'); echo $date->tog()->format('Y-m'); // An aliases for toGregorian method // Gregorian to Jalali $date = new Date('2012-06-05 20:05:01'); echo $date->toJalali(); $date = new Date('2012-06-05 20:05:01'); echo $date->toj(); // An aliases for toJalali method
修改器
考虑到您可以将负数发送到 add*
方法,而不是使用 sub*
方法。
echo Jalali::now()->startOfMonth(); echo Jalali::now()->endOfMonth(); echo Jalali::now()->startOfDay(); echo Jalali::now()->endOfDay(); echo Jalali::now()->addYears(2); echo Jalali::now()->subYears(1); echo Jalali::now()->addMonths(2); echo Jalali::now()->subMonths(1); echo Jalali::now()->addWeeks(3); echo Date::now()->subWeeks(3); echo Jalali::now()->addDays(1); echo Jalali::now()->subDays(5); echo Jalali::now()->addHours(2); echo Jalali::now()->subHours(1); echo Jalali::now()->addMinutes(10); echo Jalali::now()->subMinutes(5); echo Jalali::now()->addSeconds(14); echo Jalali::now()->subSeconds(50);
自定义
// echo as farsi numbers echo Jalali::now()->fa()->subDays(4); echo (new Jalali)->addDays(5)->fa('Y-m-d l'); // Can use just fa() instead of fa()->format()
比较
所有比较均基于公历日期,因此您可以使用不同类型的类比较两个日期。
$date1 = new Jalali('1395-07-12'); $date2 = new Jalali('1395-10-05'); $date1->equalTo($date2); $date1->eq($date2); $date1->notEqualTo($date2); $date1->ne($date2); $date1->greaterThan($date2); $date1->gt($date2); $date1->greaterThanOrEqualTo($date2); $date1->gte($date2); $date1->lessThan($date2); $date1->lt($date2); $date1->lessThanOrEqualTo($date2); $date1->lte($date2); $now->between($date1, $date2); $now->bw($date1, $date2); $now->betweenEqual($date1, $date2); $now->bwe($date1, $date2);
差异
您不能发送第一个参数或发送空值,以计算从当前日期时间的差异。
如果第二个参数为 true,则返回基于绝对值,否则基于差异,默认为 true
我们不确定贾拉利日期中的 diffInYears
、diffInMonths
、diffInWeeks
和 diffInDays
,如果您有任何错误,请报告。
$date1->diffInYears($date2); $date1->diffInMonths($date2); $date1->diffInWeeks($date2); $date1->diffInDays(); $date1->diffInHours($date2); $date1->diffInMinutes($date2, true); $date1->diffInSeconds($date2, false);
时间戳
// Create from timestamp $date = new Jalali(1466664181); $date = new Date(1466664181); $date = Jalali::createFromTimestamp(1466664181); // Get timestamp $date->getTimestamp(); $date->format('U'); // Set timestamp $date->setTimestamp(1466664181);
框架
Laravel5
将以下代码添加到 aliases
数组中的 app.php
配置文件。
'Jalali' => Date\Jalali::class, 'Date' => Date\Date::class