amaccis / datetai
一个PHP库,包括一系列处理TAI时间标准的DateTime和DateTimeImmutable实例的工具。
0.9.0
2023-03-22 20:36 UTC
Requires
- php: ^8.1.7
- ext-ctype: *
Requires (Dev)
- phpunit/phpunit: ^10.0
README
一个PHP库,包括一系列处理TAI时间标准的DateTime和DateTimeImmutable实例的工具。
关于TAI的基本知识,请阅读这里。关于TAI的外部格式(即TAI64、TAI64N和TAI64NA)的基本知识,请阅读这里。最后,关于闰秒的基本知识,请阅读这里。
由于DateTimeInterface不处理纳秒,因此此库部分支持TAI64N格式,并且值始终四舍五入到微秒。同样地,由于这个原因,目前不支持TAI64NA格式。
安装
该库作为Packagist上的包提供,因此您可以使用Composer进行安装
composer require amaccis/datetai
基本用法
TAI/UTC转换
use Amaccis\DateTai\DateTai; use DateTime; use DateTimeImmutable; $taiDateTime = new DateTime('1992-06-02 08:07:09'); $utcDateTime = DateTai::convertTaiIntoUtc($taiDateTime); var_dump($utcDateTime->format('Y-m-d H:i:s')); // 1992-06-02 08:06:43 $taiDateTimeImmutable = new DateTimeImmutable('1992-06-02 08:07:09'); $utcDateTimeImmutable = DateTai::convertTaiIntoUtc($taiDateTimeImmutable); var_dump($utcDateTimeImmutable->format('Y-m-d H:i:s')); // 1992-06-02 08:06:43
UTC/TAI转换
use Amaccis\DateTai\DateTai; use DateTime; use DateTimeImmutable; $utcDateTime = new DateTime('1992-06-02 08:06:43'); $taiDateTime = DateTai::convertUtcIntoTai($utcDateTime); var_dump($taiDateTime->format('Y-m-d H:i:s')); // 1992-06-02 08:07:09 $utcDateTimeImmutable = new DateTimeImmutable('1992-06-02 08:06:43'); $taiDateTimeImmutable = DateTai::convertUtcIntoTai($utcDateTimeImmutable); var_dump($taiDateTimeImmutable->format('Y-m-d H:i:s')); // 1992-06-02 08:07:09
使用外部TAI格式格式化DateTimeInterface
use Amaccis\DateTai\DateTai; use Amaccis\DateTai\Enum\ExternalTaiFormatEnum; use DateTime; $dateTime = new DateTime('1992-06-02 08:07:09'); $externalTai64Format = DateTai::formatAsExternalTaiFormat($dateTime, ExternalTaiFormatEnum::TAI64); var_dump($externalTai64Format); // 400000002a2b2c2d
use Amaccis\DateTai\DateTai; use Amaccis\DateTai\Enum\ExternalTaiFormatEnum; use DateTimeImmutable; $dateTimeImmutable = new DateTimeImmutable('1992-06-02 08:07:09.389984500'); $externalTai64NFormat = DateTai::formatAsExternalTaiFormat($dateTimeImmutable, ExternalTaiFormatEnum::TAI64N); var_dump($externalTai64NFormat); // 400000002a2b2c2d173eaf00
从使用外部TAI格式格式化的TAI标签创建DateTimeInterface
use Amaccis\DateTai\DateTai; use Amaccis\DateTai\Enum\DateTimeInterfaceEnum; use Amaccis\DateTai\Enum\ExternalTaiFormatEnum; $externalTai64Format = "400000002a2b2c2d"; $dateTime = DateTai::createFromExternalTaiFormat(ExternalTaiFormatEnum::TAI64, $externalTai64Format, DateTimeInterfaceEnum::DateTime); var_dump($dateTimeImmutable->format('Y-m-d H:i:s')); // 1992-06-02 08:07:09
use Amaccis\DateTai\DateTai; use Amaccis\DateTai\Enum\DateTimeInterfaceEnum; use Amaccis\DateTai\Enum\ExternalTaiFormatEnum; $externalTai64NFormat = "400000002a2b2c2d173eb0f4"; $dateTimeImmutable = DateTai::createFromExternalTaiFormat(ExternalTaiFormatEnum::TAI64N, $externalTai64NFormat, DateTimeInterfaceEnum::DateTimeImmutable); var_dump($dateTimeImmutable->format('Y-m-d H:i:s.u')); // 1992-06-02 08:07:09.389985