2017-10-19 10 views
-1

私は、日付が1000行含まれているファイル(2017-09-04 yyyy-mm-dd mm yyyy dd)を読み込もうとしています。最初に日付と現在の形式を入力し、次に日付を日付に変換する形式を指定します。私はファイルから配列にすべてのデータを読み込み、スペースに基づいてそれを爆発させようとしています。その後、最初の3つの配列の位置私は希望の形式で日付を変換するために取っています。しかし予期しない例外を言ってエラーを出します。ここで日付を分割して希望の形式で表示する

は私のコードです:

<?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

キーワード '配列?そして、どこの喧嘩が投げられたのですか? – empiric

+1

これらの書式文字列は無効です(['date()'](http://php.net/manual/en/function.date.php#refsect1-function.date-parameters)参照)。フォーマット文字列]を使用する必要があります.2つの場合は、[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`関数のように見えるということです。あなたは `$のために[` foreach`](http://php.net/manual/en/control-structures.foreach.php)-loopを使用していないのはなぜ

<?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

関連する問題