PHP:的strtotime()总是返回01/01/1970(PHP : strtotime() r

2019-09-17 22:15发布

我想显示的日期European format (dd/mm/yyyy)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太)另一个领域,它工作正常。

谢谢你的帮助。

Answer 1:

由于格式yyyy-mm-dd的作品,试图取代.-

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


Answer 2:

试着用:

$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>";

(使用date_parse_from_format()代替strtotime()

要不就:

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


Answer 3:

从报价在PHP手册中的strtotime页面 。

在M / d / y或DMY格式日期是由寻找的各种组件之间的分隔符消除歧义:如果分离器是斜线(/),则美国米/ d假定/ Y; 而如果隔板为破折号( - )(。)或一个点,然后假定欧洲DMY格式。

为了避免潜在的不确定性,最好使用ISO 8601(YYYY-MM-DD)日期或DateTime::createFromFormat()可能时。

所以你的情况应该是两种格式YYYY-MM-DD或DMY

如果要分析你自定义格式然后使用date_create_from_format

例如,

date_create_from_format('Y.m.d',$row['DMT_DATE_DOCUMENT'])


文章来源: PHP : strtotime() returns always 01/01/1970