wikimedia/timestamp

时间戳的创建、解析和转换

v4.1.1 2023-09-29 18:53 UTC

This package is auto-updated.

Last update: 2024-09-13 12:56:53 UTC


README

Latest Stable Version License

PHP可转换时间戳库

此库提供了一个便捷的DateTime包装器,用于创建、解析和格式化时间戳。

有关该库的更多文档可以在MediaWiki.org上找到。

支持的格式

在输入时,以下格式被识别

  • ISO 8601基本和扩展格式的子集
    • 不支持0000年之前的年份或9999年之后的年份。
    • 不支持周和序数日期。
    • 需要秒级的精度。支持以微秒分辨率的秒分数。
    • 如果省略了时区,则假定使用UTC。
    • 作为扩展,'T'可以被单个空格替换。
  • 作为一个有符号整数(最多13位数字),表示自Unix纪元以来的秒数。
    • 可选地,使用'.'作为小数分隔符,以微秒分辨率表示小数秒。
  • RFC 2822格式,包括已弃用的语法。
    • CFWS令牌不支持,只能使用FWS。
    • 注意,根据RFC,所有军事时区都被视为-0000。
    • 作为扩展,字符串中的第一个分号之后的内容可以省略,此时假定使用UTC。
    • 作为扩展,可以完全省略时区,此时假定使用UTC。
  • RFC 850格式。
  • asctime格式。
  • 以下描述的TS_MWTS_DBTS_POSTGRESTS_ORACLETS_EXIF格式。

对于输出,以下转换是预定义的

  • TS_DB:MySQL datetime格式:"2012-07-31 19:01:08"
  • TS_EXIF:Exif 2.2格式:"2012:07:31 19:01:08"
  • TS_ISO_8601ISO 8601扩展格式:"2012-07-31T19:01:08Z"
  • TS_ISO_8601_BASICISO 8601基本格式:"20120731T190108Z"
  • TS_MW:一个14位字符串:"20120731190108"
  • TS_ORACLE:默认Oracle时间戳格式:"31-07-2012 19:01:08.000000"
  • TS_POSTGRES:PostgreSQL默认timestamptz格式:"2012-07-31 19:01:08+00"
  • TS_RFC2822:使用已弃用时区的RFC 2822格式:"Tue, 31 Jul 2012 19:01:08 GMT"
  • TS_UNIX:自Unix纪元(1970-01-01T00:00:00Z)以来的秒数:"1343761268"。
  • TS_UNIX_MICRO:自Unix纪元以来的秒数,包含微秒:"1343761268.000000"。

用法

$ts = new ConvertibleTimestamp( '2012-07-31T19:01:08Z' );
$formatted = $ts->getTimestamp( TS_UNIX );

// Shorthand
$formatted = ConvertibleTimestamp::convert(
    TS_UNIX, '2012-07-31T19:01:08Z'
);

// Format using PHP date formatting codes
$formatted = $ts->format( 'Y-m-d H:i:s O' );

运行测试

composer install --prefer-dist
composer test