我需要知道,如果一個$paymentDate
(31/12/2010)是$contractDateBegin
(01/01/2001)和$contractDateEnd
(01/01/2012)之間的有效如何確定日期是否在PHP中的兩個日期之間?
DD/MM/YYYY格式!
我需要知道,如果一個$paymentDate
(31/12/2010)是$contractDateBegin
(01/01/2001)和$contractDateEnd
(01/01/2012)之間的有效如何確定日期是否在PHP中的兩個日期之間?
DD/MM/YYYY格式!
由於PHP 5.3:
$paymentDate = DateTime::createFromFormat('d/m/Y', '31/12/2010');
$contractDateBegin = DateTime::createFromFormat('d/m/Y', '01/01/2001');
$contractDateEnd = DateTime::createFromFormat('d/m/Y', '01/01/2012');
if ($paymentDate >= $contractDateBegin && $paymentDate <= $contractDateEnd)
{
echo "is between\n";
}
您可能需要使用<=
調整到<
取決於日期是否是排他性的。
有用的小腳本。謝謝。 – gelviis 2013-02-26 16:52:25
,如果他們被格式化爲YYYYMMDD您可以檢查是否$paymentDate > $contractDateBegin and $paymentDate < $contractDateEnd
這工作與第一個具有較大格式的任何數字格式。如果您有美國日期,例如MM/DD/YYYY,則不起作用。
也適用於UNIX時間戳和各種其他格式。 – 2011-06-02 20:16:53
@韋斯利:試圖使它更清楚地表明,這適用於大多數時間格式:) – jberg 2011-06-02 20:18:17
基本上可以用數字表示的任何格式,其中後面的日期總是大於先前的格式。非常簡單。 – 2011-06-02 20:19:31
$test = strtotime($paymentDate);
if ($test >= strtotime($contractDateBegin) && $test <= strtotime($contractDateEnd))
請注意,如果任一時間被格式化爲UNIX時間戳,則這將失敗。 'strtotime()'將返回FALSE。在OP的編輯之後,看起來這是他想要的。 – 2011-06-02 20:23:00
'strtotime'將不起作用,因爲它認爲'/'的任何內容都是m/d/Y格式。日期需要有破折號才能使'strtotime'工作。 – Matthew 2011-06-02 20:28:02
每個變量的格式是什麼?它是時間戳嗎? – 2011-06-02 20:16:03
你有沒有嘗試過任何東西?日期是什麼格式? – 2011-06-02 20:16:25
而且,預計在$ contractDateBegin,$ contractDateEnd和$ paymentDate中有哪些日期格式? – Fredrik 2011-06-02 20:16:43