2017-10-19 52 views
-1

我正在嘗試閱讀包含以下日期的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); 
} 
?> 
+0

你爲什麼不使用['foreach'(http://php.net/manual/en/control-structures.foreach.php)-loop的'$關鍵字數組?拋出的異常在哪裏? – empiric

+1

其中之一,那些格式字符串是無效的(參見:['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

+0

你可以在這裏發佈實際文件的一部分嗎? –

回答

0

嘗試這樣的事情。問題是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); 
} 
?> 

Works here

+0

如果我試圖從文件中讀取具有當前格式和所需格式的多個日期的數據,該怎麼辦?所以在那種情況下如何將for循環移至第4個數組位置。 – Rahila

+0

對不起?你能發表一個你的數據的例子嗎? –

+0

輸入定義 此問題的輸入文件將包含少於1000行的空格分隔的三元組。每行將包含日期,當前格式和所需的輸出格式。 輸出定義 輸出應包含與給定輸入文件相同的行數。每行應包含所需輸出格式的給定輸入日期。 示例輸入 2017-09-04 yyyy-mm-dd mm * yyyy * dd 示例輸出 09 * 2017 * 04 – Rahila