cakephp/chronos

DateTime的简单API扩展。


README

Build Status Latest Stable Version Total Downloads Code Coverage Software License

Chronos专注于提供不可变日期/日期时间对象。不可变对象有助于确保日期时间对象不会意外修改,从而保持数据更加可预测。

安装

使用composer安装

$ composer require cakephp/chronos

然后你可以使用Chronos

<?php
require 'vendor/autoload.php';

use Cake\Chronos\Chronos;

printf("Now: %s", Chronos::now());

与nesbot/carbon的区别

Chronos最初与Carbon兼容,但已分叉,不再扩展PHP的DateTime和DateTimeImmutable类。

不可变对象变更

不可变对象有许多优点

  1. 使用不可变对象始终是无副作用的。
  2. 日期和时间不会在代码的其他部分下意外改变。

考虑到这些优点,当修改不可变对象时,你需要注意以下几点

// This will lose modifications
$date = new Chronos('2015-10-21 16:29:00');
$date->modify('+2 hours');

// This will keep modifications
$date = new Chronos('2015-10-21 16:29:00');
$date = $date->modify('+2 hours');

日历日期

PHP只提供datetime对象作为本地扩展的一部分。Chronos为传统的DateTime对象添加了多个便利性,并引入了ChronosDate对象。ChronosDate实例的时间被冻结到00:00:00,时区设置为服务器默认时区。这使得它们在处理日历日期时非常理想,因为时间组件将始终匹配。

use Cake\Chronos\ChronosDate;

$today = new ChronosDate();
echo $today;
// Outputs '2015-10-21'

echo $today->modify('+3 hours');
// Outputs '2015-10-21'

Chronos实例一样,ChronosDate对象也是不可变的

文档

更详细的文档可以在book.cakephp.org/chronos/3/en/找到。

API文档

API文档可以在api.cakephp.org/chronos找到。