2016-05-26 36 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 

参考