2016-05-13 16 views
2

私は、JSONの日付のMS形式で受け取った日付があります。PHPのDateTimeオブジェクトをISO文字列に変換するには?

/Date(1365004652303)/ 

私はこれを行うことにより、PHPのDateTimeオブジェクトに変換することができます:

$timestamp = round(((int) $originalMSdate)/1000); 
$convertedDate = new DateTime(); 
$convertedDate->setTimestamp($timestamp); 

は最終的に、しかし、私はそれがISO 8601形式の文字列である必要があり、それはこのようになります。私はその後、ISOの日付オブジェクト&に変換しようとしましたが、それをstrval()で文字列に変換しましたが、strval()は日付オブジェクトでは機能しません。

私も

$dateString = date_format($convertedDate, 'YY-MM-DD H:i:s'); 

を試みたが、私は、それはまた、タイムゾーン情報を含める必要があり、このように:2015-10-01T21:22:57.057Z 私はDATE_FORMATでそのための文字が表示されません。

どうすればこの問題を解決できますか?

EDIT:結果の文字列を印刷していないことを明確にする必要があります。私はそれを文字列データ型を受け入れるデータベースのフィールドに渡す必要があります。

+0

http://php.net/manual/en/function.date.php –

+1

[文字列をdatetimeに変換]の可能な複製(http://stackoverflow.com/questions/466345/converting-string-into-datetime ) – Sipty

+1

ISO 8601のフォーマットコード 'c'; [PHP Documentation](http://nl3.php.net/manual/en/function.date.php) –

答えて

1

<?php 
// input 
$time = microtime(true); 
// Determining the microsecond fraction 
$microSeconds = sprintf("%06d", ($time - floor($time)) * 1000000); 
// Creating DT object 
$tz = new DateTimeZone("Etc/UTC"); 
$dt = new DateTime(date('Y-m-d H:i:s.'. $microSeconds, $time), $tz); 
$iso8601Date = sprintf(
    "%s%03d%s", 
    $dt->format("Y-m-d\TH:i:s."), 
    floor($dt->format("u")/1000), 
    $dt->format("O") 
); 
// Formatting according to ISO 8601-extended 
var_dump(
    $iso8601Date 
); 
0

以下のコードを試してみてくださいこれが働いた:

$timestamp = round(((int) $originalMSdate)/1000); 
$dateString = date('c', $timestamp); 

をフォーマットがまったく同じではありません。

2016-04-25T14:27:00ではなく 2016-04-25T14:00〜05 27:それは、この形式ではあります00.057Z

が、それは私がいくつかの操作を行うことができますことを十分に近いです私が必要なものを手に入れよう。

関連する問題