5

我试图在European format (dd/mm/yyyy)with中显示日期,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)的字段使用相同的代码行,它工作正常。

谢谢你的帮助。

4

3 回答 3

4

由于格式yyyy-mm-dd有效,请尝试替换.-

date('d/m/Y', strtotime(str_replace('.', '-', $row['DMT_DATE_DOCUMENT'])));
于 2012-06-08T09:44:41.363 回答
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>";
于 2012-06-08T09:45:11.630 回答
3

引用PHP 手册中的 strtotime 页面

m/d/y 或 dmy 格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠 (/),则假定为美式 m/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'])
于 2012-06-08T09:54:21.080 回答