stevegrunwell/time-constants

一系列用于在PHP应用程序中更方便地表示时间的常量

v2.0.2 2024-08-23 18:33 UTC

This package is auto-updated.

Last update: 2024-09-23 18:43:04 UTC


README

Unit Tests Packagist

时间常量包在您的应用程序中定义了多个有用的PHP常量,使表示时间更加容易。

例如,假设我们有一个接受三个参数的 cache() 函数

  1. 缓存键。
  2. 要缓存的值。
  3. 缓存值的时长(以秒为单位)。

目前,将值缓存24小时的代码可能看起来像这样

cache($cacheKey, $value, 24 * 60 * 60);

而不是花时间去想 24 * 60 * 60 的含义(或者 86400 表示一天),时间常量 允许您使用易于理解的PHP常量来表示时间

cache($cacheKey, $value, \TimeConstants\DAY_IN_SECONDS);

如果需求发生变化,我们需要将值缓存多天,我们可以将其重写为

cache($cacheKey, $value, 5 * \TimeConstants\DAY_IN_SECONDS);

这些常量可能对WordPress开发者很熟悉,因为它们完全受到WordPress对时间常量使用的启发。然而,这个包更进一步,添加了 *_IN_MINUTES 常量,以便更容易地与像 Laravel的 Cache 门面 这样的库一起使用。

安装

时间常量建议通过Composer安装

$ composer require stevegrunwell/time-constants

该包已配置为自动通过Composer生成的自动加载器公开 constants.php 文件,因此您将在包安装后立即准备好使用这些常量!

定义的常量

这是一个所有由本包定义的常量的列表,以及它们的值。每个常量都被一个 if (! defined(...)) 条件语句所包裹,确保这些常量可以轻松地重新定义(如果需要)并且不会与现有的常量冲突。

截至本库的2.0.0版本,所有这些常量都在 TimeConstants 命名空间中定义。如果您是从1.x版本升级,请参阅 2.0.0版本发布说明中的迁移说明

请注意,这些常量是为了方便而定义的,并不一定是为了准确性;所有月份都被视为30天,所有年份都被视为365天。如果您需要支持闰年或更高级的时间度量,您可能需要考虑使用 PHP的 DateTimeNesbot的Carbon包

基于秒的时间

  • ONE_SECOND (1秒)
  • MINUTE_IN_SECONDS (60秒)
  • HOUR_IN_SECONDS (3600秒)
  • DAY_IN_SECONDS (86,400秒)
  • WEEK_IN_SECONDS (604,800秒)
  • MONTH_IN_SECONDS (2,592,000秒)
  • YEAR_IN_SECONDS (31,536,000秒)

基于分钟的时间

  • ONE_MINUTE (1分钟)
  • HOUR_IN_MINUTES (60分钟)
  • DAY_IN_MINUTES (1,440分钟)
  • WEEK_IN_MINUTES (10,080分钟)
  • MONTH_IN_MINUTES (43,200分钟)
  • YEAR_IN_MINUTES (525,600分钟)

乘数

这些在处理秒的一部分时可能很有用。例如,以下所有都是等效的

6000 === (6 * ONE_SECOND) * 1000 === 6 * MILLISECONDS_PER_SECOND
  • MILLISECONDS_PER_SECOND (1,000ms/s)
  • MICROSECONDS_PER_SECOND (1,000,000µs/s)
  • NANOSECONDS_PER_SECOND (1,000,000,000ns/s)
  • PICOSECONDS_PER_SECOND (1,000,000,000,000ps/s)