2016-06-24 19 views
1

文字列をPHPの日付に変換しようとしています。私が受け取る文字列がフォーマットされます: -文字列(ISO)を日付に変換するPHP

"2016-07-16T1:22:04.324+1030" 

OR

"2016-12-20T03:24:59.000Z" 

私はこの

$newDate = DateTime::createFromFormat("c", $exp); 
$expirationDate = $newFormat->getTimestamp(); 

DateTimeが失敗したしようとします。私が試してみても

$newDate = DateTime::createFromFormat(ISO8601, $exp; 
$expirationDate = $newFormat->getTimestamp(); 

DateTimeはまだ失敗します。

ご意見をいただければ幸いです。

+2

まず一つだけです:: 'YYYY-MM-以降のバージョンが

リファレンスを返しますながら失敗に-1を返します以前の5.1.0より PHP DDThh:mm:ss [.sss] 'あなたの文字列はISO861ではありません。 –

答えて

1

次のようにしてください: -

<?php 

$time = "2016-07-16T1:22:04.324+1030"; 

echo date("d M, Y",strtotime(date($time))); 

?> 

出力: - 2016年7月16日: - 撮影したhttps://eval.in/594695

参考: -

Converting ISO 8601 format to d M Y in PHP

注: - あなたの都合に合わせた日付の書式を変更することができます。 D M d Y h:i:s O Tのようになります。私はPHP 5.5.4、PHP 5.5.14、PHP 7でこのコードをチェックしました。

+0

これは、このフォーマットの文字列 '' 2016-07-16T1:22:04.324 + 1030 "'にはうまくいきますが、 '' 2016-12-20T03:24:59.000Z "' – bobthegoalie

+0

私は5.6.17を使用しています – bobthegoalie

+0

私はあなたのリンクで動作することを見た。 'date()'だけを取り出して '2016-12-20T03:24:59.000Z'という日付に入れたら、' 2017-07-10MDT13:57:37.000-21600'を出力します'strtotime()'を取ると、その関数は自分の日付のように負の数になります。 – bobthegoalie

1

date formatあなたはこちらに集めては

$exp = "2016-07-16T1:22:04.324+1030"; 
$newDate = DateTime::createFromFormat("Y-m-d\TG:i:s.uO",$exp); 
echo $newDate->format("Y-m-d H:i:s O");//2016-07-16 01:22:04 +1030 
0
$dateval="2016-07-16T1:22:04.324+1030"; 
$dateval=str_replace("T"," T",$dateval); 

$date = new DateTime($dateval); 
echo $date->format('D M d Y h:i:s O T');//outputs your given time 
echo "<br />"; 

または

echo date("D M d Y h:i:s O T",strtotime($dateval));//outputs your based on your timezone time 

はそれが

を助けるWLLホープとして、それはようにする必要があり、あなたの関数内で比較したものではありません
0

質問よりもずっと遅くこの質問に答えていますが、私は次の点がすでに提供されている答えを実証するのに役立つと感じています。 strtotime関数を使用しながら、心に留めておくべき

重要事項:年は、その後、00から69の間の値がマッピングされ、2桁の文字列で指定されている場合:

1年2桁であります2000-2069年および70-99年から1970-1999年まで。可能な違いは32ビットで発生する可能性があります。

2.セパレータの使用:セパレータを使用すると予期しない出力が発生することがあります。セパレータスラッシュ( "/")は、日付がアメリカの書式、すなわちm/d/yであることをPHPに示します。セパレータのダッシュまたはドット( " - "または "。")を使用すると、PHPはヨーロッパの書式、つまりd-m-yを想定します。さらに、年がダッシュ区切り記号で2桁で指定されている場合、PHPはそれをy-m-d形式と見なします。

3タイムスタンプ範囲:典型的な有効なタイムスタンプは金、1901年12月13日の範囲であり、午後8時45分54秒UTC火、2038年1月19日に最小と最大32ビットの符号付き整数を表し、午前3時14分07秒UTC 。しかし、64ビットバージョンのPHPの場合、タイムスタンプの有効範囲は事実上無限です。

4.文字列が有効なタイムスタンプであるかどうかの確認:strtotime関数でパラメータとして指定された文字列は、異なるバージョンで異なる結果を提供できます。 http://php.net/manual/en/function.strtotime.phpミリ秒ですべてのISO8601日付形式の

関連する問題