PHP:strotime()始终返回1970年1月1日
我试图用PHP:strotime()始终返回1970年1月1日,php,date,format,strtotime,Php,Date,Format,Strtotime,我试图用strotime以欧洲格式(dd/mm/yyyy)显示日期,但它总是返回1970年1月1日 这是我的代码行: echo "<p><h6>".date('d/m/Y', strtotime($row['DMT_DATE_DOCUMENT']))."</h6></p>"; echo“”。日期('d/m/Y',标准时间($row['DMT\u date\u DOCUMENT'])。“”; 在我的数据库中,字段是varchar,记录的格式类似于
strotime
以欧洲格式(dd/mm/yyyy)
显示日期,但它总是返回1970年1月1日
这是我的代码行:
echo "<p><h6>".date('d/m/Y', strtotime($row['DMT_DATE_DOCUMENT']))."</h6></p>";
echo“”。日期('d/m/Y',标准时间($row['DMT\u date\u DOCUMENT'])。“”;
在我的数据库中,字段是varchar,记录的格式类似于yyyy.mm.dd
我对另一个字段使用相同的代码行,该字段的格式类似于yyyy-mm-dd(也使用varchar),并且工作正常
谢谢您的帮助。由于格式
yyyy-mm-dd
有效,请尝试将
替换为-
:
date('d/m/Y', strtotime(str_replace('.', '-', $row['DMT_DATE_DOCUMENT'])));
尝试:
$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>";
引用
通过查看各个组件之间的分隔符,可以消除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('Y.m.d',$row['DMT_DATE_DOCUMENT'])
这可能是因为strotime假设的是mm/dd/yyyy,如果您输入一个像2012年2月13日这样的日期,它会抱怨没有第13个月,并给您时间0(1970年1月1日)。是的,只有
日期不会接受来自\u格式的日期解析\u的直接输出。
date_create_from_format('Y.m.d',$row['DMT_DATE_DOCUMENT'])