我使用PHP获取从API XML(说的3倍快)。我收到来自所有数据的返回正确的字符串。问题是当我尝试用以下两种方法来格式化时间字符串:

$dataset = $xmlDoc->getElementsByTagName( "Class" );

foreach( $dataset as $row ) {

    $xmlStartTimes = $row->getElementsByTagName( "StartTime" );
    $xmlStartTime = $xmlStartTimes->item(0)->nodeValue;

    echo $xmlStartTime; // Gives eg. 12/30/1899 6:15:00 PM

    // Convert Time to 24H

    // Attempt 1:

    $cleanStartTime = preg_match('^12/30/1899 (0[1-9]|1[0-2]):(0[1-9]|[1-5][0-9]):([00]) (AM|PM|pm|am)$', $xmlStartTime, $matches);

    print_r($matches); // Gives empty array

    // Attempt 2:

    $cleanStartTime = date("H:i", strtotime("$xmlStartTime"));

    echo $cleanStartTime // Gives 1:00

}

感谢考虑看看。

有帮助吗?

解决方案

这些时间是UNIX外时间戳范围(32位)。使用日期时间扩展,而不是:

<?php
$a = new DateTime("12/30/1899 6:15:00 PM");
echo $a->format("H:i");

给出18:15

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top