-1

以下はデータベースからの出力で、開始日とデータベースからの日付の間の月数を取得しようとしています。以下は私の出力です

string(10) "12/12/2010" Date : 12/12/2010 - 1292112000
string(10) "19/04/2000" Date : 19/04/2000 -
string(10) "08/08/2007" Date : 08/08/2007 - 1186527600
string(10) "20/06/2011" Date : 20/06/2011 - 

ご覧のとおり、2 番目と 4 番目の UNIX タイムスタンプは空です。何が問題を引き起こしているのかわかりません。以下は、上記の内容をエコーするために使用しているコードです。

echo "Date : " . $row['startDate'] . " - " . strtotime($row['startDate']) . var_dump($row['startDate']). "<br />";
4

2 に答える 2

9

マニュアルから:

m/d/y または dmy 形式の日付は、さまざまな構成要素間の区切り記号を調べることで明確になります。区切り記号がスラッシュ (/) の場合、アメリカの m/d/y が想定されます。一方、セパレータがダッシュ (-) またはドット (.) の場合は、ヨーロッパの dmy 形式が想定されます。

潜在的なあいまいさを避けるために、可能であれば ISO 8601 (YYYY-MM-DD) 日付または DateTime::createFromFormat() を使用することをお勧めします。

于 2013-03-28T17:01:50.537 に答える
1

問題を解決しました。PHP 5.3 で新しい DateTime 関数をいくつか使用しました。

$originalDate = str_replace("/", "-", $row['startDate']);
$date1 = new DateTime($originalDate);
$date2 = new DateTime('now');

$interval = date_diff($date1, $date2);

echo "Months" . $interval->format('%m') . ($interval->format('%y') * 12) . "<br />";
于 2013-03-28T17:19:11.067 に答える