在PHP中读取Excel时的日期格式处理

在PHP中读取Excel时的日期格式处理,php,excel,datetime,Php,Excel,Datetime,我正在从Excel中读取数据,不确定Excel文件中的日期格式。我需要它的具体格式是“Y-m-d H:I:s” 我从Excel中获得了一个示例: 2018年3月17日00:00和2018年1月3日0:37 echo date("Y-m-d H:i:s", strtotime('17/03/2018 00:00')); echo date("Y-m-d H:i:s", strtotime('3/1/2018 0:37')); 我得到的结果是: 第一个:1970-01-01 05:30:

我正在从Excel中读取数据,不确定Excel文件中的日期格式。我需要它的具体格式是“Y-m-d H:I:s”

我从Excel中获得了一个示例:

2018年3月17日00:00和2018年1月3日0:37

 echo date("Y-m-d H:i:s", strtotime('17/03/2018 00:00'));   
 echo date("Y-m-d H:i:s", strtotime('3/1/2018 0:37'));
我得到的结果是:

第一个:1970-01-01 05:30:00
第二张:2018-03-01 00:37:00
其中第一个是错误的,第二个是正确的。我知道这个月的读数不正确,但我该如何处理


有人能帮我处理来自Excel的任何格式吗?

它不符合印度标准。正确的格式应为:
strotime('03/17/2018 00:00')
。或者使用
DateTime::createFromFormat()
。还请注意,您不能将任何格式转换为日期。日期的格式应该是已知的。您完全可以使用
strotime
将几乎所有类型的字符串转换为日期,但不能转换为任何格式。i Aniket,我无法控制csv文件。我理解您的担忧,但由人以任何格式编写的日期都是不明确的。例如:
01-02-03
,您将解释为2003年2月1日、2003年1月2日还是2002年1月3日?不可能得出结论。因此,您最好使用
strotime
将字符串转换为时间戳,如果无法返回时间戳,则让人工处理。如果您获得2018年2月1日是2月1日还是1月2日?注意:这种方法只解决给定的测试用例,并且无法按照OP.@AniketSahrawat我知道我已经给出的格式进行转换第一个解决方案:1970-01-01 05:30:00,我假设印度日期格式d/m/yyyy,即使我们认为你只给印度日期格式提供了解决方案,那么就不必首先使用代码> StryExchange < /代码>,然后将它转换成TS。我确信使用<代码>日期时间解析字符串::createFromFormat(“D/M/Y H:I”,“17/3/2018 0:00”)。->格式(“Y-m-DH:i:s”)必须比执行此操作快得多。
echo date("Y-m-d H:i:s", strtotime(str_replace('/','-',"17/3/2018 00:00"))); 

echo date("Y-m-d H:i:s", strtotime(str_replace('/','-','3/1/2018 0:37')));