2012-01-18 106 views
0
<?php 
$firstdate = '2011-11-16'; 
$sample = date("d-m-Y", strtotime($firstdate)); 
echo $sample; 
?> 

我與日期表中的列在這種格式2011-11-16 但我需要它反向,所以我用下面的代碼。英國的日期格式在PHP

問題是,當日期是0000-00-00時,它會打印01-01-1970。 有沒有辦法讓它打印00-00-0000呢?請注意,我期待將其轉換爲英國格式。 00-00-0000。

謝謝

+0

echo($ date ==「0000-00-00」)? 「00-00-0000」:日期(「d-m-Y」,strtotime($ date)); – rdlowrey

回答

1

問題是在這樣的日期在內部表示。他們使用所謂的Unix time,其中日期表示爲「Unix時代」之後的秒數,該時間爲1/1/1970。這就是爲什麼date(正常)表示0(這是什麼strtotime的回報,當你通過它0000-00-00)爲1月1日,1970年

我能想到的唯一的解決辦法是這樣的:

<?php 
$firstdate = '2011-11-16'; 
$sample = $firstdate == '0000-00-00' ? '00-00-0000' : date("d-m-Y", strtotime($firstdate)); 
echo $sample; 
?> 
+0

順便說一句,如果在出現黑屏之前按下Esc鍵,仍然可以查看維基百科。 – cambraca

+0

謝謝。這工作:) –

1

0000-00-00這不是一個有效的日期。顯然,沒有一個月0

因此,如果您使用的爲「完全沒有日期」的佔位符,則該解決方案相當簡單:

if($date==='0000-00-00') { 
    echo '00-00-0000'; 
} 
+0

其實你可以通過'0'作爲月份(或日期),它會根據它計算一個新的日期。例如'strtotime('2012-00-00');'給你2011年11月30日,因爲它被解釋爲「2012年1月1日減去一天和一個月」 – cambraca

+0

這只是圖書館如何計算東西的副作用雖然。 – Evert

1

你可以做這樣的事情:

<?php 
$firstdate = '2011-11-16'; 
$sample = $firstdate!=='0000-00-00'?date("d-m-Y", strtotime($firstdate)):''00-00-0000; 
echo $sample; 
?> 
1

當你空的日期,扭轉它。

if($firstdate == '0000-00-00') $sample = strrev($firstdate); 
else 
{ 
    $sample = date("d-m-Y", strtotime($firstdate)); 
} 
相關問題