PHP strotime():显示日期';1970-01-01';转换后

PHP strotime():显示日期';1970-01-01';转换后,php,mysql,datetime,Php,Mysql,Datetime,我正在从excel表格中读取数据并插入MySQL表。在这个过程中,我使用PHP方法strotime()将时间戳(字符串)转换为datetime 这在某些情况下是失败的 例如: echo date('Y-m-d H:i:s',strtotime('04-13-2018 0:00:53')); echo date('Y-m-d H:i:s',strtotime('04-12-2018 0:00:53')); 输出: 1970-01-01 00:00:00 2018-12-04 00:00:

我正在从excel表格中读取数据并插入MySQL表。在这个过程中,我使用PHP方法
strotime()
将时间戳(字符串)转换为datetime

这在某些情况下是失败的

例如:

 echo date('Y-m-d H:i:s',strtotime('04-13-2018 0:00:53'));

 echo date('Y-m-d H:i:s',strtotime('04-12-2018 0:00:53'));
输出:

1970-01-01 00:00:00

2018-12-04 00:00:53
谁能帮我解决这个问题

失败的示例字符串:

04-12-2018 0:00:53
04-12-2018 0:01:53
04-12-2018 0:02:53
04-12-2018 0:03:53
04-12-2018 0:04:53
04-12-2018 0:05:53
04-12-2018 0:06:53
04-12-2018 0:07:53
04-12-2018 0:08:54
04-12-2018 0:09:54
04-12-2018 0:10:53
04-12-2018 0:11:53
04-12-2018 0:12:53
04-12-2018 0:13:53
04-12-2018 0:14:53
04-12-2018 0:15:53
04-12-2018 0:16:53
04-12-2018 0:17:53
04-12-2018 0:18:53
04-12-2018 0:19:54
04-12-2018 0:20:54
04-12-2018 0:21:54
04-12-2018 0:22:53
04-12-2018 0:23:54
04-12-2018 0:24:53
04-12-2018 0:25:54
您的格式不是

在您的情况下,
13
不是一个“月”。所以解析器到目前为止还不能理解

你应使用:

输出:

2018-04-13 00:00:53

请注意,格式也可以是:
'm-d-Y G:i:s'
G
,用于“一小时的24小时格式,不带前导零”。

添加到已回答的内容中。
得到1970的原因是,如果beacause无法解析日期,则返回false。

0(false)unix时间是1970年。

strotime()的字符串格式错误,(我不记得技术术语)“American formatted”值:

给出:

1970-01-01 01:00:00
2018-04-13 00:00:53
本质上,您给出了
strotime()
的(它叫什么?)值“European date time”。是
-
表示日期是第一部分,而不是月份


这是很久以前的事了。

明白了。刚才,我想出来了,把它修好了。无论如何,感谢您的即时回复。您使用了一个
-
来表示位置,Php
strotime()
-
解析为
d-m-y
,并且
m/d/y
是等效的。另外,@Syscall,如果您查看逻辑,
13
永远不会是一个月。这太荒谬了。谢谢你的有趣评论@JaredFarrish。我知道我的格式不是有效的格式,但为什么函数日期('format',false)给我一个1970年的日期?为什么不返回false或undefined?
2018-04-13 00:00:53
echo date('Y-m-d H:i:s', strtotime('04-13-2018 0:00:53'));
echo date('Y-m-d H:i:s', strtotime('04/13/2018 0:00:53'));
1970-01-01 01:00:00
2018-04-13 00:00:53