2

だから私はある日付が別の日付からオフセットされた日数を計算しようとしています。現在使用しているもの:

$now = new DateTime();
$dateToCompare = new DateTime("<filled from DB>");
$diff = $now->diff($dateToCompare);
echo $diff->format("%R%a");

私が見つけたのは、これが日付を比較し、暦日ではなく24時間の期間に対するオフセットを与えるということです。

たとえば、これらの日付の日オフセットは0です(1になると予想されます)。

2012-10-1119:27:04および2012-10-1206:50:00

この機能を正しく使っていますか?これは1のオフセットになると思います。ただし、多くのデバッグを行った結果、これが日付オフセットで実際に見られる不一致の原因であることがわかりました。

(タイムゾーンはPHPによって提案されたようにも設定されています)

よろしくお願いします!

4

3 に答える 3

3

DateTime::createFromFormatを使用して、月、日、年だけを使用してオブジェクトを作成してみてください。

次のテストされていないコードを試してみてください。

$now = DateTime::createFromFormat('Y-m-d', date('Y-m-d')); // Note that if no timestamp is given, it uses the current time instead of 12am
$dateToCompare = DateTime::createFromFormat('Y-m-d', "<filled from DB>"); //match format of db datetime
$diff = $now->diff($dateToCompare);
echo $diff->format("%R%a");
于 2012-10-12T02:43:38.707 に答える
1

簡単な方法を探しているなら、これを試すことができます

$date1 = strtotime("2012-10-11 19:27:04");
$date2 = strtotime("2012-10-12 06:50:00");
$diff = ($date1-$date2);
echo date('j',$diff)." days";

出力は31日です

ここで「j」をサポートされている日付形式の文字に置き換えることができます http://php.net/manual/en/function.date.php

于 2012-10-12T03:15:06.053 に答える
0

年、月、日を使用するだけです。

$now = strtotime(Date("Y-m-d", strtotime("2012-10-12 06:50:00")));
$pre = strtotime(Date("Y-m-d", strtotime("2012-10-11 19:27:04")));
var_dump(($now-$pre)/86400);

私の環境では動きDateTimeません。

于 2012-10-12T03:43:28.473 に答える