2016-07-30 1 views
-1

まず問題を理解してください。PHPが必要です。高度でトリッキーなコーディング

私はdate_diff()関数が使用されます知っているPHPコードはPHP

に変数にPHPの二つの日付(日数)との違いを見つけて、数値/ int型の値として結果を保存したいです。しかし、どのように? 私はwampserver 2.2 7 Windows上で私のPHPのバージョンを使用していますが、私はtimestampに日付を変換して、違いを取得していると考えることができます

+1

「数値/ INT」それはどのようでしょうか?また、日、週、月または分ですか?例が良いでしょう。 – Philipp

+0

@Philipp日数 –

+0

は、 'DateTime'クラスと' date_diff() '関数を使って答えを加えました。 – Philipp

答えて

2
$date = new DateTime('2014-01-31'); 

$date2 = new DateTime('2014-02-04'); 

$diff = date_diff($date, $date2, true); 
$difference = $diff->format("%a"); // 4 

。日以外のものが必要な場合は、可能な形式をここで確認できます。http://php.net/manual/en/dateinterval.format.php

ご覧のとおり、date_diff()は非常に使いやすいです。 DateIntervalオブジェクトが返されます。オブジェクトをフォーマットして、目的の結果を得ることができます。

+0

私は冷静に文を理解していません var_dump($ diff-> format( "%a")); 実際には、2つの日付の間の日数が数値変数に代入される必要があります。スクリプトの後半で変数を使用することができます。 –

+0

@RockyAlex '$ diff->形式で返された値を表示するだけでした( "%a") 'となります。スニペットをそのまま使用すると '$ difference'は値4になり、他の変数と同様に扱うことができます – Philipp

+0

@RockyAlexこのコードには問題がありますか? – Philipp

-1

最適なソリューションを助けてください5.3.12 です。例は次のとおりです。 - これはあなたの日数に差を与える

$date1 = date('Y-m-d H:i:s'); 
$date2 = date('Y-m-d H:i:s'); //I know it's same, it will be different in your case. 
//conver it to timestamp now 
$date1_timestamp = strtotime($date1); 
$date2_timestamp = strtotime($date2); 
//calculate difference. 
$difference = $date2_timestamp - $date2_timestamp; 
//the difference variable holds an int value. 
//however, if you want to convert it back to readable date, you can do it like this 
$difference_readable_date = date('m/d/Y', $difference); 
+0

これはこれを解決する素晴らしい方法です! –

+0

@JakePsimos ありがとうございました。ちょうど回避策:) – Akshay

+0

私は日数が必要です –

-1

すべてのオッズ1または2回、日付またはタイムスタンプのための私の機能..

function time_Diff($time2_, $time1_ = false) { 
     $date1 = new \DateTime(); 
     if ($time1_) { 
      $time1 = preg_match('/[-\/]/', $time1_) ? strtotime($time1_) : $time1_; 
      $date1->setTimestamp($time1); 
     } 
     $date2 = new \DateTime(); 
     $time2 = preg_match('/[-\/]/', $time2_) ? strtotime($time2_) : $time2_; 
     $date2->setTimestamp($time2); 
     $interval = $date1->diff($date2); 
     $diffrent_ = $interval->format('%Y Years %m Months %d Days %H:%I:%S'); 
     $diffrent = str_replace(['00 Years', ' 0 Months', ' 0 Days', '00:00:00'], '', $diffrent_); 
     $returner = str_replace(['01 Years', ' 1 Months', ' 1 Days'], ['01 Year', ' 1 Month', ' 1 Day'], $diffrent); 
     return trim($returner); 
    } 
関連する問題