haiquang9994 / date
Requires
- php: >=5.5
- nesbot/carbon: ^1.0
- symfony/translation: ^2.7|^3.0|^4.0
Requires (Dev)
- phpunit/phpunit: ^4.0|^5.0|^6.0
- satooshi/php-coveralls: ^1.0
- v3.3.2
- v3.3.1
- v3.3.0
- v3.2.12
- v3.2.11
- v3.2.10
- v3.2.9
- v3.2.8
- v3.2.7
- v3.2.6
- v3.2.5
- v3.2.4
- v3.2.3
- v3.2.2
- v3.2.1
- v3.2.0
- dev-master / 3.1.x-dev
- v3.1.1
- v3.1.0
- v3.0.13
- v3.0.12
- v3.0.11
- v3.0.10
- v3.0.9
- v3.0.8
- v3.0.7
- v3.0.6
- v3.0.5
- v3.0.4
- v3.0.3
- v3.0.2
- 3.0.1
- v3.0.0
- v3.0.0-beta.2
- v3.0.0-beta
- 2.0.x-dev
- v2.0.22
- v2.0.21
- v2.0.20
- v2.0.19
- v2.0.18
- v2.0.17
- v2.0.16
- v2.0.15
- v2.0.14
- v2.0.13
- v2.0.12
- v2.0.11
- v2.0.10
- v2.0.9
- v2.0.8
- v2.0.7
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.0.0
This package is auto-updated.
Last update: 2022-02-01 13:11:21 UTC
README
此日期库扩展了Carbon,增加了多语言支持。如format
、diffForHumans
、parse
、createFromFormat
和新的timespan
等方法现在将根据您的区域设置进行翻译。
安装
使用composer安装
composer require jenssegers/date
Laravel
此包包含一个服务提供者,用于与Laravel框架集成。此提供者将获取应用程序的区域设置并用于翻译。要注册服务提供者,请在config/app.php
文件中的提供者数组中添加以下内容:
'Jenssegers\Date\DateServiceProvider',
您也可以将其添加为config/app.php中的门面。
'Date' => Jenssegers\Date\Date::class,
语言
此包包含以下语言的本地化文件:
- 阿尔巴尼亚语
- 阿拉伯语
- 阿塞拜疆语
- 孟加拉语
- 巴斯克语
- 巴西葡萄牙语
- 保加利亚语
- 加泰罗尼亚语
- 克罗地亚语
- 简体中文
- 繁体中文
- 捷克语
- 丹麦语
- 荷兰语
- 英语
- 世界语
- 爱沙尼亚语
- 芬兰语
- 法语
- 加利西亚语
- 格鲁吉亚语
- 德语
- 希腊语
- 希伯来语
- 印地语
- 匈牙利语
- 冰岛语
- 印度尼西亚语
- 意大利语
- 日语
- 哈萨克语
- 韩语
- 拉脱维亚语
- 立陶宛语
- 马其顿语
- 马来语
- 挪威语
- 尼泊尔语(नेपाली)
- 波兰语
- 葡萄牙语
- 波斯语(Farsi)
- 罗马尼亚语
- 俄语
- 泰语
- 塞尔维亚语(拉丁语)
- 塞尔维亚语(西里尔语)
- 斯洛伐克语
- 斯洛文尼亚语
- 西班牙语
- 瑞典语
- 土耳其语
- 土库曼语
- 乌克兰语
- 乌兹别克语
- 越南语
- 威尔士语
用法
日期类扩展了Carbon的format
和diffForHumans
等方法,并根据您的区域设置进行翻译。
use Jenssegers\Date\Date; Date::setLocale('nl'); echo Date::now()->format('l j F Y H:i:s'); // zondag 28 april 2013 21:58:16 echo Date::parse('-1 day')->diffForHumans(); // 1 dag geleden
日期类还添加了一些别名和额外的方法,如:将diffForHumans
的别名设置为ago
,以及添加了timespan
方法。
echo $date->timespan(); // 3 months, 1 week, 1 day, 3 hours, 20 minutes
parse
和createFromFormat
等方法也支持“反向翻译”。当用已翻译的输入调用这些方法时,它将尝试将其翻译成英语后再传递给DateTime。
$date = Date::createFromFormat('l d F Y', 'zaterdag 21 maart 2015');
Carbon
Carbon是日期类基于的库。所有原始的Carbon操作仍然可用,有关更多信息,请参阅https://github.com/briannesbitt/Carbon。以下是一些可用方法:
创建日期
您可以使用和DateTime对象相同的方式创建Date对象(https://php.ac.cn/manual/en/datetime.construct.php)
$date = new Date(); $date = new Date('2000-01-31'); $date = new Date('2000-01-31 12:00:00'); // With time zone $date = new Date('2000-01-31', new DateTimeZone('Europe/Brussels'));
您可以直接跳过创建DateTimeZone对象
$date = new Date('2000-01-31', 'Europe/Brussels');
从相对格式创建Date对象(https://php.ac.cn/manual/en/datetime.formats.relative.php)
$date = new Date('now'); $date = new Date('today'); $date = new Date('+1 hour'); $date = new Date('next monday');
这些静态方法也可以使用
$date = Date::parse('now'); $date = Date::now();
从时间戳创建Date对象
$date = new Date(1367186296);
或从现有日期或时间创建
$date = Date::createFromDate(2000, 1, 31); $date = Date::createFromTime(12, 0, 0); $date = Date::create(2000, 1, 31, 12, 0, 0);
日期格式化
您可以将Date对象格式化得像DateTime对象一样(https://php.ac.cn/manual/en/function.date.php)
echo Date::now()->format('Y-m-d'); // 2000-01-31
Date对象可以被转换为字符串
echo Date::now(); // 2000-01-31 12:00:00
获取人类可读的输出(diffForHumans的别名)
echo $date->ago(); // 5 days ago
计算时间段
$date = new Date('+1000 days'); echo Date::now()->timespan($date); // 2 years, 8 months, 3 weeks, 5 days // or even echo Date::now()->timespan('+1000 days');
获取自日期以来的年份
$date = new Date('-10 years'); echo $date->age; // 10 $date = new Date('+10 years'); echo $date->age; // -10
日期操作
您可以通过使用add和sub方法以及相对间隔(https://php.ac.cn/manual/en/datetime.formats.relative.php)来操作
$yesterday = Date::now()->sub('1 day'); $tomorrow = Date::now()->add('1 day'); // ISO 8601 $date = Date::now()->add('P2Y4DT6H8M');
您可以像访问和修改对象属性一样访问和修改所有日期属性
$date->year = 2013: $date->month = 1; $date->day = 31; $date->hour = 12; $date->minute = 0; $date->second = 0;
贡献
您可以通过向lang目录添加新的语言文件轻松添加新语言。这些语言条目支持复数形式。通过使用“竖线”字符,您可以将字符串的单数和复数形式分开
'hour' => '1 hour|:count hours', 'minute' => '1 minute|:count minutes', 'second' => '1 second|:count seconds',
一些语言在与像'ago'这样的后缀结合使用时,有不同的单位翻译。对于这些情况,您可以通过将后缀添加为单位键来添加额外的翻译
'year' => '1 Jahr|:count Jahre', 'year_ago' => '1 Jahr|:count Jahren',
还有一个generator.php
脚本,可以快速输出特定区域设置的日和月翻译。如果您想添加新语言,这可以加快过程
php generator.php nl_NL
注意!如果您正在添加语言,请检查有关月份和日期名称大写的规则:http://meta.wikimedia.org/wiki/Capitalization_of_Wiktionary_pages#Capitalization_of_month_names
许可证
Laravel Date遵循MIT许可证(MIT)。