wikimedia / timestamp
时间戳的创建、解析和转换
v4.1.1
2023-09-29 18:53 UTC
Requires
- php: >=7.4.0
Requires (Dev)
- mediawiki/mediawiki-codesniffer: 41.0.0
- mediawiki/mediawiki-phan-config: 0.12.1
- mediawiki/minus-x: 1.1.1
- ockcyp/covers-validator: 1.6.0
- php-parallel-lint/php-console-highlighter: 1.0.0
- php-parallel-lint/php-parallel-lint: 1.3.2
- phpunit/phpunit: 9.5.28
README
PHP可转换时间戳库
此库提供了一个便捷的DateTime包装器,用于创建、解析和格式化时间戳。
有关该库的更多文档可以在MediaWiki.org上找到。
支持的格式
在输入时,以下格式被识别
- ISO 8601基本和扩展格式的子集
- 不支持0000年之前的年份或9999年之后的年份。
- 不支持周和序数日期。
- 需要秒级的精度。支持以微秒分辨率的秒分数。
- 如果省略了时区,则假定使用UTC。
- 作为扩展,'T'可以被单个空格替换。
- 作为一个有符号整数(最多13位数字),表示自Unix纪元以来的秒数。
- 可选地,使用'.'作为小数分隔符,以微秒分辨率表示小数秒。
- RFC 2822格式,包括已弃用的语法。
- CFWS令牌不支持,只能使用FWS。
- 注意,根据RFC,所有军事时区都被视为-0000。
- 作为扩展,字符串中的第一个分号之后的内容可以省略,此时假定使用UTC。
- 作为扩展,可以完全省略时区,此时假定使用UTC。
- RFC 850格式。
- asctime格式。
- 以下描述的
TS_MW
、TS_DB
、TS_POSTGRES
、TS_ORACLE
和TS_EXIF
格式。
对于输出,以下转换是预定义的
TS_DB
:MySQL datetime格式:"2012-07-31 19:01:08"TS_EXIF
:Exif 2.2格式:"2012:07:31 19:01:08"TS_ISO_8601
:ISO 8601扩展格式:"2012-07-31T19:01:08Z"TS_ISO_8601_BASIC
:ISO 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