php-sap / datetime
通过SAP周、日期、时间和时间戳格式扩展PHP的DateTime类。
v1.5.0
2024-07-23 15:05 UTC
Requires
- php: ^8.1
Requires (Dev)
- phpunit/phpunit: ^9.6
- squizlabs/php_codesniffer: ^3.7
README
通过SAP周、日期、时间和时间戳格式扩展PHP的DateTime类。通过SAP时间格式扩展PHP的DateInterval类。
- SAP周格式为
<year><week>
- SAP日期格式为
<year><month><day>
- SAP时间格式为
<hour><minute><second>
- SAP时间戳格式为
<year><month><day><hour><minute><second>
用法
composer require php-sap/datetime:~1.0.0
将SAP周字符串解析为DateTime对象。
<?php use phpsap\DateTime\SapDateTime; $dateTime = SapDateTime::createFromFormat(SapDateTime::SAP_WEEK, '201846'); echo $dateTime->format('o \w\e\ek W') . PHP_EOL; /** * Output: 2018 week 46 */
将DateTime对象格式化为SAP周字符串
<?php use phpsap\DateTime\SapDateTime; $dateTime = new SapDateTime('2018-10-19 08:09:10'); echo $dateTime->format(SapDateTime::SAP_WEEK) . PHP_EOL; /** * Output: 201842 */
将SAP日期字符串解析为DateTime对象
<?php use phpsap\DateTime\SapDateTime; $dateTime = SapDateTime::createFromFormat(SapDateTime::SAP_DATE, '20181101'); echo $dateTime->format('Y-m-d') . PHP_EOL; /** * Output: 2018-11-01 */
将DateTime对象格式化为SAP日期
<?php use phpsap\DateTime\SapDateTime; $dateTime = new SapDateTime('2018-12-31 09:10:11'); echo $dateTime->format(SapDateTime::SAP_DATE) . PHP_EOL; /** * Output: 20181231 */
将SAP时间字符串解析为DateTime对象
<?php use phpsap\DateTime\SapDateTime; $dateTime = SapDateTime::createFromFormat(SapDateTime::SAP_TIME, '132001'); echo $dateTime->format('H:i:s') . PHP_EOL; /** * Output: 13-20-01 */
将SAP时间字符串解析为DateInterval对象
此示例使用25小时来展示如何结合使用DateInterval对象和DateTime对象。请注意,format()
方法更类似于PHP的sprintf()
,而不是date()
。
<?php use phpsap\DateTime\SapDateInterval; $time = SapDateInterval::createFromDateString('252003'); echo $time->format('%H:%I:%S') . PHP_EOL; /** * Output: 25:20:03 */ $date = new DateTime('2018-11-01 00:00:00'); $date->add($time); echo $date->format('Y-m-d H:i:s'); /** * Output: 2018-11-02 01:20:03 */
将DateTime对象格式化为SAP时间
<?php use phpsap\DateTime\SapDateTime; $dateTime = new SapDateTime('21:45:05'); echo $dateTime->format(SapDateTime::SAP_TIME) . PHP_EOL; /** * Output: 214505 */
将DateInterval对象格式化为SAP时间
<?php use phpsap\DateTime\SapDateInterval; $time = new SapDateInterval('PTH21M45S05'); echo $time->format(SapDateInterval::SAP_TIME) . PHP_EOL; /** * Output: 214505 */
将SAP时间戳解析为DateTime对象
<?php use phpsap\DateTime\SapDateTime; $dateTime = SapDateTime::createFromFormat(SapDateTime::SAP_TIMESTAMP, '20181019080910'); echo $dateTime->format('Y-m-d H:i:s') . PHP_EOL; /** * Output: 2018-10-19 08:09:10 */
将DateTime对象格式化为SAP时间戳
<?php use phpsap\DateTime\SapDateTime; $dateTime = new SapDateTime('2018-12-31 09:10:11'); echo $dateTime->format(SapDateTime::SAP_TIMESTAMP) . PHP_EOL; /** * Output: 20181231091011 */