4

重複の可能性:
PHP を使用して 2 つの日付の差を計算する方法は?
年/月/週/日の2つの日付の違いを取得するには?

PHP で指定された 2 つの日付の間の年月日を計算しようとしています。

それらの日付のタイムスタンプも使用しています。年と月を計算する方法はありますか

それらのタイムスタンプの差からの日数。

たとえば、最初の日付は 2008 年 1 月 2 日で、2 番目の日付は 2012 年 7 月 5 日です。結果は 4 年 5 月 3 日です。

私は日付入力としてタイムスタンプに取り組んでおり、2つの入力タイムスタンプによって上記のものを直接計算する利用可能な関数があることを知りたい

4

4 に答える 4

29

そのために DateTime オブジェクトを使用できます (datetime コンストラクターに「,」がないことに注意してください)。

$datetime1 = new DateTime('2 Jan 2008');
$datetime2 = new DateTime('5 July 2012');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%y years %m months and %d days');
于 2013-01-25T09:55:04.807 に答える
11

DateTime を使用すると、これを非常に簡単に行うことができます。

$date1 = new DateTime("2008-01-02");
$date2 = new DateTime("2012-07-05");
$diff = $date1->diff($date2);

echo "difference " . $diff->y . " years, " . $diff->m." months, ".$diff->d." days "

ドキュメンテーション

于 2013-01-25T09:55:36.070 に答える
2

Carbonを見てください。これは、多くの便利なメソッドを備えた DateTime の上にあるかなり新しい PHP 5.3 ライブラリです。

日付差分の場合:

<?php
$dtOttawa = Carbon::createFromDate(2000, 1, 1, 'America/Toronto');
$dtVancouver = Carbon::createFromDate(2013, 1, 1, 'America/Vancouver');
echo $dtOttawa->diffInHours($dtVancouver);
echo $dtOttawa->diffInDays($dtVancouver);
echo $dtOttawa->diffInMinutes($dtVancouver);
echo $dtOttawa->diffInYears($dtVancouver);

人間が読める差分が必要な場合:

$dt = Carbon::createFromDate(2011, 2, 1);

echo $dt->diffForHumans($dt->copy()->addMonth());              // 28 days before
echo $dt->diffForHumans($dt->copy()->subMonth());              // 1 month after
于 2013-01-25T10:03:51.000 に答える
1

タイムスタンプから 2 つの DateTime オブジェクト (www.php.net/datetime) を作成できます。diff メソッドを呼び出すと、年と月のプロパティを持つ DateInterval オブジェクトを取得します。

于 2013-01-25T09:54:26.043 に答える