我想编辑数据库中存在的帖子的当前日期,例如;(类型 = 日期时间)
例如#1;
2012-12-09 22:58:15
这是 post 值(我成功获得);
31/01/1980 08:20:00
当我使用以下函数将其转换为日期时,我得到 '01/01/1970 01:00:00'
$date = date('d/m/Y H:i:s', strtotime($_POST['date']));
我真的不明白为什么它总是出错。
提前致谢。
我想编辑数据库中存在的帖子的当前日期,例如;(类型 = 日期时间)
例如#1;
2012-12-09 22:58:15
这是 post 值(我成功获得);
31/01/1980 08:20:00
当我使用以下函数将其转换为日期时,我得到 '01/01/1970 01:00:00'
$date = date('d/m/Y H:i:s', strtotime($_POST['date']));
我真的不明白为什么它总是出错。
提前致谢。
strtotime 失败,返回一个布尔值 false,它被视为 (int)0 并转换为 unix 纪元:午夜,1970 年 1 月 1 日
阅读手册页上的节点:http: //php.net/strtotime了解它将接受/理解的格式。
...然后使用http://php.net/date_create_from_format代替。
m/d/y 或 dmy 格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠 (/),则假定为美式 m/d/y;而如果分隔符是破折号 (-) 或点 (.),则假定为欧洲 dmy 格式。
您需要将日期转换01/31/1980 08:20:00
为31-01-1980 08:20:00
strtotime 才能正常工作。
您遇到的问题可能与 strtotime 上的 PHP 手册中的此注释有关:
m/d/y 或 dmy 格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠 (/),则假定为美式 m/d/y;而如果分隔符是破折号 (-) 或点 (.),则假定为欧洲 dmy 格式。
为避免潜在的歧义,最好尽可能使用 ISO 8601 (YYYY-MM-DD) 日期或 DateTime::createFromFormat()。
您正在发送 d/m/y 并且由于日期中的斜杠分隔符,PHP 将其作为美国 m/d/y 时间来消除歧义。
根据发布的答案试试这个:
<?php
$date = new DateTime(str_replace("/", "-", $_POST['date']));
echo $date->format('d/m/Y H:i:s');
?>