1

我正在使用 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

}

谢谢参观。

4

1 回答 1

1

这些时间超出了 UNIX 时间戳范围(32 位)。请改用 DateTime 扩展:

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

18:15.

于 2010-06-16T12:54:52.247 回答