opencafe / datium
PHP编写的最灵活的DateTime包
1.1.1
2017-12-08 09:44 UTC
Requires (Dev)
- phpunit/phpunit: ~4.0
This package is not auto-updated.
Last update: 2024-09-14 18:31:40 UTC
README
用PHP编写的强大的DateTime包,支持日历和翻译的泛化,使Datium强大且简单。
- 代码和逻辑的简洁性
- 每部分都可扩展
- 支持希吉历、贾拉利历、儒略历和库尔德历
支持
- ^PHP:5.4
- PHP:7
安装
通过Composer
composer require opencafe/datium
手册
只需在您的项目中包含Datium.php
并在以下示例中使用Datium命名空间
require_once 'src/Datium.php'; use OpenCafe\Datium; echo Datium::now()->get();
使用方法
简单获取您想要的
作为datium输出
Datium::now()->get(); // ex: 2016-01-01 00:00:00 Datium::now()->timestamp(); // ex: 1420057800 Datium::now()->get('timestamp'); // ex: 1420057800
或者按照您需要的简单方式处理日期
Datium::now()->add('1 day')->get(); // ex: 2016-01-02 00:00:00
获取
获取Datium作为DateTime PHP对象
Datium::now()->object();
或者将其返回为简单的日期和时间字符串
Datium::now()->get();
并且还可以使用自定义PHP YMD 格式
Datium::now()->get( 'l jS F Y h:i:s A' );
时间戳格式
Datium::create(2016,10,16)->get('timestamp'); // Result : 1476563400
易于使用
Datium::now()->all(); // Result object(stdClass)#5 (6) { ["second"]=> string(2) "03" ["minute"]=> string(2) "10" ["hour"]=> string(2) "15" ["day"]=> string(2) "12" ["month"]=> string(2) "10" ["year"]=> string(4) "2016" } Datium::now()->all()->year; // 2016 Datium::now()->all()->month; // 10 Datium::now()->all()->day; // 12 Datium::now()->all()->hour; // 15 Datium::now()->all()->minute; // 10 Datium::now()->all()->second; // 03
创建
您也可以简单地创建新的时间
// Create with YMD Datium::create( 2016, 1, 1, 12, 56, 13 )->get(); //ouput: 2016-01-01 12:56:13 // Create with YMD without time Datium::create( 2016, 1, 1 )->get(); // output: 2016-01-01 12:56:13 // Create with timestamp Datium::createTimestamp( 1420057800 )->get() // output => 2015-01-01 00:00:00
添加日期
此方法允许您向当前日期添加一些年、月、周、日、小时、分钟和秒。
// If current date is 2016-01-01 00:00:00 then: // Add 3 years Datium::now()->add('3 year')->get(); // output => 2019-01-01 00:00:00 // Add 1 week Datium::create(2016, 1, 1)->add('1 week')->get(); // output => 2016-01-08 00:00:00 // Add one month Datium::now()->add('1 month')->get() // output => 2016-02-01 00:00:00 // Add 1 year, 3 month and 2 days Datium::now()->add('1 year') ->add('3 month') ->add('2 day') ->add('1 hour') ->add('2 minute') ->add('3 second') ->get(); // output => 2017-04-03 01:02:03
减去日期
从当前日期减去一些年、月、日、小时、分钟和秒。
// If current date is 2016-01-01 00:00:00 then: // Sub 3 years Datium::now()->sub('3 year')->get(); // output => 2013-01-01 00:00:00 // Sub 1 week Datium::create(2016, 1, 8)->sub('1 week')->get(); // output => 2016-01-01 00:00:00 // Sub one month Datium::now()->sub('1 month')->get() // output => 2015-12-01 00:00:00 // Sub 1 year, 3 month and 2 days Datium::now()->sub('1 year') ->sub('3 month') ->sub('2 day') ->get(); // output => 2014-09-29 00:00:00
日期差异
此方法将返回两个特定日期之间的差异,以PHP日期间隔类型返回。
// current generated date difference with next 5000 days $diff = Datium::diff( Datium::now()->object(), Datium::now()->add('5000 day')->object() ); echo $diff->days; // output => 5000 echo $diff->year . ' year, ' . $diff->month . ' month, ' . $diff->day . ' day '; // ouput => 13 year, 8 month, 7 day
可读性时间差异
Datium还支持可读性日期和时间差异。
// current generated date difference with next 5000 days $diff = Datium::diff( Datium::now()->object(), Datium::now()->add('5000 day')->object() )->simple->get(); // result => 13 years ago // current generated date difference with next 5000 days $diff = Datium::diff( Datium::now()->object(), Datium::now()->sub('5000 day')->object() )->simple->get(); // result => 13 years remaining // current generated date difference with next 5000 days $diff = Datium::diff( Datium::now()->object(), Datium::now()->add('5000 day')->object() )->simple->lang('fa')->get(); // result => ۱۳ سال پیش
闰年
使用泛化支持定义当前年份的闰年。
// If current date was 2016 // Is 2016 a leap year? Datium::now()->leap()->get(); // output => FALSE // Is 2017 a leap year? Datium::now()->add('1 year')->leap()->get(); // output => TRUE Datium::now()->to('hijri')->leap()->get();
获取日期的日期
此方法返回星期或年份,具有泛化支持,您可以将此功能添加到自定义日历中,如Datium中支持的其它日历。
年份中的日期
当前年中的哪一天
// If current date was 2015-09-03 Datium::now()->dayOf()->year(); // output => 246 // Day of year to Gregorian Datium::now()->dayOf()->year(); // Day of year to Jalali Datium::now()->to( 'jalali' )->dayOf()->year(); // Day of year to Hijri Datium::now()->to( 'hijri' )->dayOf()->year(); // Day of year to kurdish Datium::now()->to( 'kurdish' )->dayOf()->year();
星期中的日期
当前是星期几
// If current date 'll be 2015-09-09 Thursday Datium::now()->dayOf()->week(); // output => 5 // Day of week to Gregorian Datium::now()->dayOf()->week(); // Day of week to Jalali Datium::now()->to( 'jalali' )->dayOf()->week(); // Day of week to Hijri Datium::now()->to( 'hijri' )->dayOf()->week(); // Day of week to Kurdish Datium::now()->to( 'kurdish' )->dayOf()->week();
月份的最后一天
当前月有多少天
// Last Day of Current Month to Gregorian Datium::now()->dayOf()->lastDayMonth(); // Last Day of Current Month to Jalali Datium::now()->to( 'jalali' )->dayOf()->lastDayMonth(); // Last Day of Current Month to Hijri Datium::now()->to( 'hijri' )->dayOf()->lastDayMonth(); // Last Day of Current Month to Kurdish Datium::now()->to( 'kurdish' )->dayOf()->lastDayMonth();
泛化
日历泛化
Datium支持日历泛化,您可以将自定义日历添加到Datium并用作默认日历。
Datium::create( 2015, 11, 9 )->to( 'jalali' )->get() //Convert Gregorian to Jalali calendar: 1394-08-18 00:00:00 Datium::create( 2015, 11, 9 )->to( 'hijri' )->get() //Convert Gregorian to Hijri calendar: 1437-01-26 00:00:00 Datium::create( 2015, 11, 9 )->to( 'kurdish' )->get() //Convert Gregorian to Kurdish calendar: 2715-08-18 00:00:00
将Datium上支持的所有日历或您的自定义日历尽可能简单地转换为其他日历
Datium::create( 1395, 7, 25 )->from( 'jalali' )->get(); // Gregorian is default value for destination calendar. // result: 2016-10-16 00:00:00 Datium::create( 1395, 7, 25 )->from( 'jalali' )->to( 'hijri' )->get(); // result: 1438-01-14 00:00:00
翻译泛化
翻译泛化是Datium的另一个泛化支持。
Datium::create( 2016, 6, 25, 12, 0, 0 )->to( 'jalali' )->lang( 'fa' )->get('l jS F Y h:i:s A'); // ex: شنبه ۵ تیر ۱۳۹۵ ۱۲:۰۰:۰۰ ب.ظ Datium::create( 2016, 6, 25, 12, 0, 0 )->to( 'jalali' )->get('l jS F Y h:i:s A'); // ex: Shanbe 5th Tir 1395 12:00:00 PM Datium::create(2016, 6, 25, 12, 0, 0)->to('hijri')->get('l jS F Y h:i:s A'); // ex: as-Sabt 19th Ramadan 1437 12:00:00 PM Datium::create(2016, 6, 25, 12, 0, 0)->to('kurdish')->get('l jS F Y h:i:s A'); // ex: Şeme 5th Puşper 2716 12:00:00 PM Datium::create(2016, 6, 25, 12, 0, 0)->get('l jS F Y h:i:s A'); // ex: Saturday 25th June 2016 12:00:00 PM
更改配置
初始化Datium对象后,您可以更改任何配置。
$datium = Datium::create( $date->format('Y'), $date->format('m'), $date->format('d'), $date->format('h'), $date->format('i'), $date->format('s') ); $datium->setConfig(['timezone'=>'Europe/Istanbul']);
默认配置
[
'timezone' => 'Asia/Tehran',
'language' => 'en',
'default_calendar' => 'gregorian',
'date_interval' => [ 'D', 'M', 'Y', 'HT', 'MT', 'ST' ],
'date_simple' => [ 'day', ' month', ' year', ' hour', ' minute', ' second' ],
]