2016-10-05 14 views
4

最初の日付から2番目の日付までの日数を取得しようとしています.2番目の日付から3番目の日付への日数などを取得しようとしています。 私は2016年3月1日から2016年4月1日に、私は2016年2月1日から2016年3月1日までの日数を取得したいこの配列の指定された日付から日数を取得する

$dates = array(
    2016 - 02 - 01, 
    2016 - 03 - 01, 
    2016 - 04 - 01, 
    2016 - 05 - 01, 
    2016 - 06 - 01, 
    2016 - 07 - 01, 
    2016 - 09 - 01, 
    2016 - 11 - 01, 
    2016 - 12 - 01, 
    2017 - 01 - 01, 
    2017 - 12 - 01 
); 

ような配列を持っている、ととそれで、あなたが気づいたら、彼らは1ヶ月以上ジャンプするような日付にいくつかのギャップがあります。 そして、私はここでは、この

array()(
    [0] => 0, 
    [1] => 30, 
    [2] => 60 
    //so on ... 
) 

ような配列でそれをしたいが、私はそれをやっているが、私はuninitialized string offsetようなエラーを取得していますし、私は私がやっている方法はおそらく

public function rangeDates() 
{ 
    $dates = array(
     '2016-02-01', 
     '2016-03-01', 
     '2016-04-01', 
     '2016-05-01', 
     '2016-06-01', 
     '2016-07-01', 
     '2016-09-01', 
     '2016-11-01', 
     '2016-12-01', 
     '2017-01-01', 
     '2017-12-01' 
    ); 
    $datez = array(); 
    $index = 0; 
    $indexone = 1; 
    foreach($dates as $date) 
    { 
     $datez = round(abs(strtotime($date[$index]) - strtotime($date[$indexone]))/86400); 
     $index++; 
     $indexone++; 
    } 

    echo $datez; 
} 

間違っていると思う方法です日付は文字列の形式ですが、私が言いたいことを忘れた追加情報は、たとえば年を取るなど、日数を追加する必要があるということです。

array(11) (
    [0] => (int) 0 
    [1] => (int) 365 
    [2] => (int) 730 
    [3] => (int) 1095 
    [4] => (int) 1460 
    [5] => (int) 1825 
    [6] => (int) 2190 
    [7] => (int) 2555 
    [8] => (int) 2920 
    [9] => (int) 3285 
    [10] => (int) 3650 
+0

[この](http://stackoverflow.com/questions/39630992/how-to-get-start-and-end-of-the-week-between-twoをご確認ください-dates/39631610#39631610)、私にはそれがあなたのために大丈夫かどうかを教えてください。最初の部分だけが必要なものすべてについてです。あなたが理解できない場合は、私はあなたに答えを出すことができます.__ –

+0

https://eval.in/655456 –

+0

@FrayneKonok申し訳ありませんが、私はそれを正しく言及しなかったか、または理解するのが難しいと思いますが、次の月に追加されるので、基本的には0,30,60,90ですので、前日のように次の日に追加されます。私が意味を作ってほしい –

答えて

5

これはあなたが必要とすることです。日付配列をループし、それに応じて日付の差を計算します。あなたのループは、配列の合計サイズの1つ不足して実行されます。間隔から、曜日を呼び出して配列に格納します。

$dates = array(
    "2016-02-01", 
    "2016-03-01", 
    "2016-04-01", 
    "2016-05-01", 
    "2016-06-01", 
    "2016-07-01", 
    "2016-09-01", 
    "2016-11-01", 
    "2016-12-01", 
    "2017-01-01", 
    "2017-12-01" 
); 

$datez = array(); 
$date = array(); 
$datez[] = 0; 

for($i = 1; $i < count($dates) - 1; $i++){ 
    $start_date = $dates[$i-1]; 
    $end_Date = $dates[$i]; 

    $date1 = new DateTime($start_date); 
    $date2 = new DateTime($end_Date); 
    $interval = $date1->diff($date2); 

    $date[] = $interval->days; 
    $datez[] = array_sum($date); 
} 

print_r($date); 
print_r($datez); 

Online Example

+0

申し訳ありませんが、私はそれを正しく言及しなかったか、または理解するのが難しいと思いますが、私が欲しいのは違いですが、来月に追加されるので、基本的には0,30,60,90です。次の日に追加されました。うまく私は意味を作った –

+0

それはあなたがこれらのすべてを必要とすべきではないはずです..ちょうど簡単な開始日と終了日の違いがあなたの仕事を完了します。 –

+0

私は上部の質問を編集しました。最後に詳細情報が表示されますので、どうぞご覧ください。 –

関連する問題