【发布时间】:2019-09-05 23:13:55
【问题描述】:
我有一个庞大的 Excel 文件,我正在导入并存储到日期字段(日期(“Y-m-d”))。 问题是,输入有几种不同的格式,例如:
1) 2015/01/01 // valid format, php converts this to yyyy-mm-dd
2) 2015-01 // supposed to be 2015-01-01
3) jan/18 // supposed to be 2018-01-01
如您所见,虽然大多数以有效格式提供,但(大部分)使用的其他两种格式是“年-月”和“月/年”。 一切都表明strtotime,下面应该工作 - 但是如果我的理解是正确的,我将如何指示当月的“第一天”没有提供这一天(因为否则它最终会为所有内容都为空,但上面的(1)如果我的理解是正确的)?
//assumes $str is one of the above mentioned formats
if (($timestamp = strtotime($str)) === false) {
$date = null;
} else {
$date = date('Y-m-d', $timestamp);
}
【问题讨论】:
-
您需要对每种情况使用 preg_match 和正则表达式,并逐个应用修改
-
正则表达式是解决问题的方法(需要找到模式)它并不难
-
你知道所有的日期格式吗?
-
只是上面列出的 3 个@Claudio
标签: php