henzeb/datetime

简单的可测试的DateTime实例

v1.1.0 2024-02-11 14:35 UTC

This package is auto-updated.

Last update: 2024-09-11 15:49:22 UTC


README

Latest Version on Packagist Total Downloads

当创建一个需要速度而不仅仅是功能的库或功能时,这个包非常有用,但仍适用于测试需求。

请别误会,Carbon在修改DateTime对象方面是一个很好的包,我经常使用它。但它有代价。当你需要很多它的功能时,你会看到开销增长。比使用纯DateTime要快。

如果你不希望你的库成为其他人代码的瓶颈,但仍然想能够使用改变日期或时间的功能进行测试,你可以使用这个包。

安装

只需使用以下命令安装。

composer require henzeb/datetime

用法

use Henzeb\DateTime\DateTime;
DateTime::now();
DateTime::now(new DateTimeZone(...));
DateTime::new('2022-04-25');

不可变DateTime

use Henzeb\DateTime\DateTimeImmutable;
DateTimeImmutable::now();
DateTimeImmutable::now(new DateTimeZone(...));
DateTimeImmutable::new('2022-04-25');

注意:除了newnow之外,没有方便的方法或功能。它只是具有timetravel功能的纯DateTimeDateTimeImmutable

单元测试

就像Carbon一样,这个库有一个静态的setTestNow方法。你可以传递一个字符串或DateTime对象。当传递null时,新的DateTime对象将再次使用当前日期和时间。

use Henzeb\DateTime\DateTime;
DateTime::setTestNow('now'); // freezes time
DateTime::setTestNow('1999-01-01');
DateTime::setTestNow(new DateTime('1999-01-01'));

测试

composer test

变更日志

请参阅变更日志了解最近有哪些变化。

贡献

请参阅贡献指南以获取详细信息。

安全

如果你发现任何安全相关的问题,请通过电子邮件henzeberkheij@gmail.com报告,而不是使用问题跟踪器。

鸣谢

许可证

GNU AGPLv. 请参阅许可证文件以获取更多信息。