2016-05-26 62 views
1

我正在構建一個任務列表。我的數據庫中有兩張桌子。模板和任務 的模板結構,像這樣日期計數PHP

id, task_name, function, text, days_to_action 

1, Touch Base, call, Call to touch base, 7 

任務表的結構是這樣的:

id, task_name, function, text, due_date 
1, Touch Base, call, Call to touch base, 02:06:2016 

到期日與該公式($ set_days被抓days_to_action)計算:

$dueDate = date('d:m:Y', strtotime('+'.$set_days.' days')); 

正如你所看到的我正在使用澳大利亞日期格式。要做到我在我的所有網頁的頂部包含這個正確的事情:

date_default_timezone_set('Australia/Brisbane'); 

在我的網頁我想顯示當天或逾期是由於任務。

$today = date('d:m:Y'); 
$task_list = $mysqli->query("SELECT * FROM task WHERE id='$linkid' && time_due <= '$today' ORDER BY datetime DESC"); 

我發現這個bug是當天翻轉到一個新的月份(如上面的例子)我的代碼認爲2016年2月6日(日/月/年)是28之前出現的日期/ 05/2016。

數據庫只能使用美式格式嗎?有沒有選擇切換到澳大利亞?有沒有我失蹤的一步? B

+1

更新列是'DATE'類型,你可以依靠MySQL爲你做這些計算。 – hjpotter92

+0

@ hjpotter92我已經更新了欄目。它消滅了我的輸入,因爲我猜他們是無效的。我會嘗試修復提交內容,看看是否有效。謝謝。 – Bjaeg

回答

1

通常情況下,爲了存儲日期值,應該使用DATE數據類型,因爲維護和數據檢索會很方便。

MySQL以'YYYY-MM-DD'格式檢索並顯示DATE值。

爲了顯示或其他操作目的,您可以輕鬆更改PHP中的應用程序級別的格式,但是您應該始終使用DATE數據類型(即「YYYY-MM-DD」)推/拉MySQL中的記錄。

您可以通過改變數據類型:

ALTER TABLE task CHANGE due_date due_date DATE 

參考