m-jch/date

修复所有 php 中的日期需求

v1.1.3 2019-06-09 07:17 UTC

This package is auto-updated.

Last update: 2024-09-15 00:29:17 UTC


README

修复所有 php 中的日期需求

安装

将以下行添加到 require 部分中的 composer.json

"m-jch/date" : "~1"

运行 composer update

教程

本包包含 2 个类,分别是 JalaliDate。其中 Jalali 类负责贾拉利(太阳历)日期时间,而 Date 类负责公历日期时间。

以下所有示例均应在 JalaliDate 类中运行。

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

我们不确定贾拉利日期中的 diffInYearsdiffInMonthsdiffInWeeksdiffInDays,如果您有任何错误,请报告。

$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