2012-01-18 187 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)); 
} 
相关问题