2017-02-19 10 views
0

は、PHPでdate_diffを使用して2017年6月3日PHPのdate_diff関数が壊れていますか?

が割り当てとして(私がこの機能の複製を作成するタスクを持っているこの

object(DateInterval)[6] 
    public 'y' => int 0 
    public 'm' => int 1 
    public 'd' => int 20 
    public 'h' => int 0 
    public 'i' => int 0 
    public 's' => int 0 
    public 'weekday' => int 0 
    public 'weekday_behavior' => int 0 
    public 'first_last_day_of' => int 0 
    public 'invert' => int 0 
    public 'days' => int 50 
    public 'special_type' => int 0 
    public 'special_amount' => int 0 
    public 'have_weekday_relative' => int 0 
    public 'have_special_relative' => int 0 

を与え、これら二つの日付2017年4月14日考えてみましょう)。しかし、私は私のアルゴリズムを介してこれらの日付を実行したときに、私は

object(stdClass)[4] 
    public 'years' => int 0 
    public 'months' => int 1 
    public 'days' => int 19 
    public 'total_days' => int 50 
    public 'invert' => int 0 

を取得し、私は手(手動)での日数を計算するとき、私はまだ19の余分な日としてこれを参照してください。私は割り当てソリューションを探していません。しかし、おそらくいくつかのアルゴリズムや多分date_diff関数には私が気づいていないいくつかのバグがありますか?

200以上のテストケースでは、私のアルゴリズムは動作しますが、それ以外は7つありません。私のソリューションとPHPソリューションの日差はいつもあります。

答えて

1

月は固定日数ではないため、「1か月」に悩まされることになります。あなたは2017年4月14日から開始し、最初の完全数ヶ月かかる場合

あなたが得られます。

  • 4/14 - > 5/14:1ヶ月(30日)
  • 5/14 - > 6/3:20日

あなたは2017年6月3日から開始し、後方にあなたの方法を作業する場合、あなたは買ってあげる中:

  • 6/3 - > 5/3:1月(31日間)
  • 5/3 - > 4月14日:19日

だから、あなたが使っている方法に依存するだろう。

簡潔に言えば、date_diffはここでは壊れておらず、間違いなくあなたのアルゴリズムはどちらでもありません。日付はちょうどうまく動作するものです。

関連する問題