1

私は PHP を使用して API から XML を取得しています (3 倍の速さだと言えます)。すべてのデータから返された正しい文字列をすべて取得しています。次の 2 つの方法で時間文字列を再フォーマットしようとすると、問題が発生します。

$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 に答える