我正在尝试使用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一样)的另一个字段,它工作正常。
感谢您的帮助。
答案 0 :(得分:4)
由于格式yyyy-mm-dd
有效,请尝试将.
替换为-
:
date('d/m/Y', strtotime(str_replace('.', '-', $row['DMT_DATE_DOCUMENT'])));
答案 1 :(得分: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>";
(使用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>";
答案 2 :(得分:2)
引自the strtotime page in the PHP manual。
通过查看各个组件之间的分隔符来消除m / 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
例如,
date_create_from_format('Y.m.d',$row['DMT_DATE_DOCUMENT'])