1

我想编辑数据库中存在的帖子的当前日期,例如;(类型 = 日期时间)

例如#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']));

我真的不明白为什么它总是出错。

提前致谢。

4

4 回答 4

4

strtotime 失败,返回一个布尔值 false,它被视为 (int)0 并转换为 unix 纪元:午夜,1970 年 1 月 1 日

阅读手册页上的节点:http: //php.net/strtotime了解它将接受/理解的格式。

...然后使用http://php.net/date_create_from_format代替。

于 2013-03-06T19:05:23.760 回答
0

strtotime

m/d/y 或 dmy 格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠 (/),则假定为美式 m/d/y;而如果分隔符是破折号 (-) 或点 (.),则假定为欧洲 dmy 格式。

您需要将日期转换01/31/1980 08:20:0031-01-1980 08:20:00strtotime 才能正常工作。

于 2013-03-06T19:08:27.417 回答
0

您遇到的问题可能与 strtotime 上的 PHP 手册中的此注释有关:

m/d/y 或 dmy 格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠 (/),则假定为美式 m/d/y;而如果分隔符是破折号 (-) 或点 (.),则假定为欧洲 dmy 格式。

为避免潜在的歧义,最好尽可能使用 ISO 8601 (YYYY-MM-DD) 日期或 DateTime::createFromFormat()。

您正在发送 d/m/y 并且由于日期中的斜杠分隔符,PHP 将其作为美国 m/d/y 时间来消除歧义。

于 2013-03-06T19:10:32.167 回答
0

根据发布的答案试试这个:

<?php
$date = new DateTime(str_replace("/", "-", $_POST['date']));
echo $date->format('d/m/Y H:i:s');
?>
于 2013-03-06T19:20:26.797 回答