2012-06-08 9 views
5

European format (dd/mm/yyyy)に日付を表​​示しようとしていますが、strtotimeと表示されていますが、常に01/01/1970を返します。ここで PHP:strtotime()は常に01/01/1970を返します。

は私のコードラインである:私のデータベースで

echo "<p><h6>".date('d/m/Y', strtotime($row['DMT_DATE_DOCUMENT']))."</h6></p>"; 

、フィールドがvarchar型で、レコードが

は、私は別のフィールドに同じコードラインを使用YYYY.MM.DDのようにフォーマットされていますyyyy-mm-dd(varcharも同様)のように構成され、正常に動作します。

ありがとうございました。 yyyy-mm-dd作品形式以来

+0

ミリメートル/ DD/YYYYの代わりにとあれば、あなたの入力のような13日/ 2/2012年には13番目の月がなく、0(1/1/1970) –

答えて

4

-.を交換してみてください。

date('d/m/Y', strtotime(str_replace('.', '-', $row['DMT_DATE_DOCUMENT']))); 
3

はして試してみてください。

$date = date_parse_from_format("Y.m.d", $row['DMT_DATE_DOCUMENT']); 
$time = mktime($date['hour'], $date['minute'], $date['second'], $date['month'], $date['day'], $date['year']); 
echo "<p><h6>".date('d/m/Y', $time)."</h6></p>"; 

それともを(代わりにstrtotime()date_parse_from_format()を使用):

$date = date_parse_from_format("Y.m.d", $row['DMT_DATE_DOCUMENT']); 
echo "<p><h6>{$date['day']}/{$date['month']}/{$date['year']}</h6></p>"; 
+1

を与えています。はい、 'date'は' date_parse_from_format'の直接出力を受け付けません。 – deceze

+0

あなたは正しいです。申し訳ありませんが、私は今修正します。 – fquffio

2

から引用します。the strtotime page in the PHP manual

メートル/ D/Yの日付またはd-M-Yフォーマットは、様々な構成要素間のセパレータを見て非曖昧化された:セパレータはスラッシュ(/)である場合、アメリカンM/D/Yが想定されます。セパレータがダッシュ( - )またはドット(。)の場合は、ヨーロッパのd-m-y形式が使用されます。

潜在的なあいまいさを避けるためには、ISO 8601(YYYY-MM-DD)日付またはDateTime::createFromFormat()可能性を使用することをお勧めします。

あなたの場合は、YYYY-MM-DDまたはd.m.yのいずれかの形式にする必要があります。あなたはその後、例えばdate_create_from_format

使用してカスタム・フォーマットを解析したい場合は

、のstrtotimeが想定しているので、おそらくです

date_create_from_format('Y.m.d',$row['DMT_DATE_DOCUMENT']) 
関連する問題