bjoern-goetschke / datetime
3.0.1
2024-01-06 21:34 UTC
Requires
- php: ^7.4 || ^8.0
- ext-mbstring: *
Requires (Dev)
- phpstan/extension-installer: ^1.0
- phpstan/phpstan: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpstan/phpstan-strict-rules: ^1.0
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.5
README
此库提供不可变类来处理日期和时间。基于 PHP 的 DateTime
实现。
基本用法
接口类似于 PHP 的 DateTime
类
// Get the current moment (timezone is always UTC)
$now = \BjoernGoetschke\DateTime\Moment::now();
echo $now->format("Y-m-d H:i:s P").PHP_EOL;
// Add one day
$tomorrow = $now->add(new \BjoernGoetschke\DateTime\Interval::days(1));
echo $tomorrow->format("Y-m-d H:i:s P").PHP_EOL;
还有一个表示没有时区信息的时刻的类,以及一个只表示日期而不包含任何时间和时区信息的类
// Convert the current moment to a `BjoernGoetschke\DateTime\LocalMoment` object
// which only holds the date and time, but no timezone information
$localMoment = $now->toLocalMoment();
echo $localMoment.PHP_EOL;
// Convert the local moment to a `BjoernGoetschke\DateTime\Date` object
// which only holds the date, but no time or timezone information
$todaysDate = $localMoment->toDate();
echo $todaysDate.PHP_EOL;
安装
该库可通过 Composer 获取
composer require bjoern-goetschke/datetime:^3.0
版本控制
将使用以下格式进行语义版本控制进行版本号
<主版本>.<次版本>.<修订版>
并遵循以下准则
- 破坏向后兼容性会提升主版本
- 在不破坏向后兼容性的情况下添加新功能会提升次版本
- 错误修复和其他更改会提升修订版
有关语义版本控制更多信息,请访问 http://semver.org/。
LICENSE
该库根据 BSD-2-Clause 许可发布。您可以在 LICENSE.txt 中找到此许可证的副本。
API 使用和向后兼容性
接口、类、方法等预期使用的信息使用 @api
标签指定。
如果元素不包含 @api
标签,则应将其视为内部元素,其使用可能在任何时候中断。
此规则的例外是像构造函数、析构函数或其他由编程语言定义的钩子方法之类的特殊元素。这些元素将不会有自己的 @api
标签,但可以被视为与类或它们所属的其他元素具有相同的 @api
标签。
该库不提供参数名称的向后兼容性保证。方法将具有 @no-named-arguments
标签,以帮助静态分析工具检测并警告使用具有命名参数的库,但如果某个地方缺少此标签,则不意味着对该特定方法提供了向后兼容性保证。
@api 使用
- 类
- 创建类的实例
- 可能会在
major
版本中中断
- 可能会在
- 扩展类并添加新的构造函数
- 可能会在
major
版本中中断
- 可能会在
- 扩展类并添加新方法
- 可能会在任何时候中断,但大多数情况下
minor
版本应该是可以的(如果基础类中添加了非私有方法,该方法也在扩展类中声明,则可能会中断)
- 可能会在任何时候中断,但大多数情况下
- 创建类的实例
- 方法
- 调用方法
- 可能会在
major
版本中中断
- 可能会在
- 覆盖方法(扩展类并声明具有相同名称的方法)并最终添加额外的可选参数
- 可能会在任何时候中断,但大多数情况下
minor
版本应该是可以的(如果基础类中添加了可选参数,则可能会中断)
- 可能会在任何时候中断,但大多数情况下
- 调用方法
- 接口
- 在类型提示中使用接口(将接口的实例作为参数要求)
- 可能会在
major
版本中中断
- 可能会在
- 调用接口的方法
- 可能会在
major
版本中中断
- 可能会在
- 实现接口
- 可能会在任何时候中断,但大多数情况下
minor
版本应该是可以的(如果接口中添加了新方法,则可能会中断)
- 可能会在任何时候中断,但大多数情况下
- 扩展接口
- 可能会在任何时候中断,但大多数情况下
minor
版本应该是可以的(如果基础接口中添加了在扩展接口中也声明的方法,则可能会中断)
- 可能会在任何时候中断,但大多数情况下
- 在类型提示中使用接口(将接口的实例作为参数要求)
@api 扩展
- 类
- 创建类的实例
- 可能会在
major
版本中中断
- 可能会在
- 扩展类并添加新的构造函数
- 可能会在
major
版本中中断
- 可能会在
- 扩展类并添加新方法
- 可能在小版本更新时发生崩溃,但大多数情况下应该没问题,也可能只在大版本更新时崩溃(如果基础类中添加了也在扩展类中声明过的非私有方法,将会崩溃)
- 创建类的实例
- 方法
- 调用方法
- 可能会在
major
版本中中断
- 可能会在
- 覆盖方法(扩展类并声明具有相同名称的方法)并最终添加额外的可选参数
- 可能会在
major
版本中中断
- 可能会在
- 调用方法
- 接口
- 在类型提示中使用接口(将接口的实例作为参数要求)
- 可能会在
major
版本中中断
- 可能会在
- 调用接口的方法
- 可能会在
major
版本中中断
- 可能会在
- 实现接口
- 可能会在
major
版本中中断
- 可能会在
- 扩展接口
- 可能会在
major
版本中中断
- 可能会在
- 在类型提示中使用接口(将接口的实例作为参数要求)
@api 稳定
- 被标记为稳定的任何内容可能只会在大版本更新时崩溃,这意味着除了某些小的内部更改或错误修复外,代码将不会进行任何更改
@api 内部
- 被标记为内部的内容可能随时会崩溃,但大多数情况下补丁版本应该没问题