嗨,大家好我想知道如果有人能幫助我的以下內容:日期用PHP差異
我有兩個不同的字段中輸入兩個日期>的startDate和結束日期。
以它們輸入我想顯示一個警告,如果:
- 第二個是第一個之前的日期。所以這是錯誤的。
- 而第一個和第二個之間的最小差距在一年中的某個時間段至少爲3天,而在其他時間段爲7天。
我正在考慮編寫一個PHP函數,但是如何在第二次輸入日期後立即調用它?
許多許多感謝您的幫助 弗朗西斯
嗨,大家好我想知道如果有人能幫助我的以下內容:日期用PHP差異
我有兩個不同的字段中輸入兩個日期>的startDate和結束日期。
以它們輸入我想顯示一個警告,如果:
我正在考慮編寫一個PHP函數,但是如何在第二次輸入日期後立即調用它?
許多許多感謝您的幫助 弗朗西斯
將您的日期轉換爲Julian day與gregoriantojd。
/**
* Get the Julian day of a date. The Julian day is the number of days since
* January 1, 4713 BC.
*/
function datetojd($date)
{
return gregoriantojd(idate('m', $date),
idate('d', $date),
idate('Y', $date));
}
// you can use strtotime to parse a lot of date formats, assuming they are text
$startDate = strtotime('22nd Nov 2009');
$finishDate = strtotime('26nd Nov 2009');
$diff = datetojd($finishDate) - datetojd($startDate);
if ($diff < 0) {
// oops, $finishDate is before $startDate
}
else {
// check $diff is at least 3 or 7 depending on the dates
}
請在使用JavaScript客戶端的檢查。
然後執行相同的檢查服務器端,可以在表單提交後顯示一條消息(對於少數用戶使用Javascript運行禁用?)。
1°的情況下:
SELECT [whatever you need from the table] WHERE endDate < startDate
2°的情況下:
SELECT [whatever you need from the table] WHERE (endDate - startDate) >= IF([select that define in wich period of the year the data are],3, 7)
本病的做的伎倆,但可能你的問題不能得到解決SQL端。
請更好地描述你需要做的事情。
編輯:
好,然後根據別人的建議,首先檢查被JS HTEM(爲了方便,而不是安全:從未對JS驗證只依賴!)
使用strtotime爲比較/操作。
EDIT2(最後): 圍棋與Alex's Answer
日期尚未輸入數據庫。他們會,如果他們是正確的。我需要做的唯一事情是在輸入數據庫之前檢查輸入的日期是否正確。 – frapet 2009-11-26 11:17:12
我不知道你是否能儘快進入第二日稱,除非你重新載入頁面或對另一功能頁面可能會有點複雜
我會檢查日期的方式是使用php的mktime函數,它會給你unix時間。那麼如果第二個數字小於第一個數字,第二個數字在前,如果第二個數字小於第一個+ 3 * 24 * 60 * 60(3天內的秒數),那麼它不相隔3天
不,這是StackOverflow,其中像這樣的誠實問題由愛好者回答。 – 2009-11-26 11:14:38