DateTime 库

3.0.1 2024-01-06 21:34 UTC

This package is auto-updated.

Last update: 2024-09-14 21:11:04 UTC


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 内部

  • 被标记为内部的内容可能随时会崩溃,但大多数情况下补丁版本应该没问题