Разрыв строки элемента PHP DOM с помощью strtotime () или preg_replace () - PullRequest
1 голос
/ 16 июня 2010

Я использую PHP для получения XML из API (скажем, 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

}

Спасибо, что заглянули.

1 Ответ

1 голос
/ 16 июня 2010

Эти времена находятся вне диапазона временных меток UNIX (32-битный). Вместо этого используйте расширение DateTime:

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

дает 18:15.

...