分割日期行并以所需格式显示
问题描述:
我正在尝试阅读包含以下日期的1000行文件:2017-09-04 yyyy-mm-dd mm yyyy dd。首先是日期,然后是当前格式,然后是将日期转换为所需格式。我试图从文件中读取所有数据到数组中,并在空间的基础上爆炸它。然后前三个阵列位置我正在采取所需的格式转换日期。但它说错误的意外异常。分割日期行并以所需格式显示
这里是我的代码:
<?php
$homepage = file_get_contents("file.txt");
$keywords = preg_split("/[\s,]+/", $homepage);
print_r($keywords);
$len = count($keywords);
for ($i = 0; $i <= $len; $i = $i + 2) {
$a = $keywords[$i];
$b = $keywords[$i + 1];
$c = $keywords[$i + 2];
$date = new DateTime($a);
echo $date - > format($c);
}
?>
答
尝试这样的事情。问题是PHP不看像yyyy-mm-dd
这样的格式,而是喜欢Y-m-d'. Which is what the
preg_replace`函数。
<?php
$homepage = "2017-09-04, yyyy-mm-dd, mmyyyydd";
$homepage = preg_replace('/yyyy/', 'Y', $homepage, -1);
$homepage = preg_replace('/mm/', 'm', $homepage, -1);
$homepage = preg_replace('/dd/', 'd', $homepage, -1);
$keywords = preg_split("/[\s,]+/", $homepage);
print_r($keywords);
$len = count($keywords);
for ($i = 0; $i < $len; $i += 3) {
$a = $keywords[$i];
$b = $keywords[$i + 1];
$c = $keywords[$i + 2];
$date = date_create_from_format($b, $a);
echo $date->format($c);
}
?>
你为什么不使用['foreach'(http://php.net/manual/en/control-structures.foreach.php)-loop的'$关键字数组?抛出的异常在哪里? – empiric
其中之一,那些格式字符串是无效的(参见:['date()'](http://php.net/manual/en/function.date.php#refsect1-function.date-parameters))for accepted格式化字符串]和两个你需要使用['DateTime :: createFromFormat()'](http://php.net/manual/en/datetime.createfromformat.php)从给定的日期时间字符串和格式。 – Sammitch
你可以在这里发布实际文件的一部分吗? –