我想知道如何做到这一点:减去通过日期方法获得的两个不同日期。基本上,它是我正在制作的游戏,需要一定的时间来执行一个动作。因此,让我们说用户单击一个按钮,执行查询,发送用户点击数据库的当前时间,稍后,我计划能够显示该操作剩余的时间量完成。
这是"草图":
$currenttime = date("d:m:Y \H:i:s");
$datetobeinsertedindatabase = $currenttime + 1 HOUR; //The entry on the database will have +1 Hour than the time the user clicked (I don't know how to do this part)
mysqli_prepare($link,"INSERT INTO(...)"); //Inserting the time to the database - this part I know how to do.
//DISPLAYING THE TIME LEFT SOMEWHERE ELSE
mysqli_prepare($link,"SELECT (...)"); //Selecting the time from the database and bind it to a varaible - lets say "$test" (I can also do this)
$currenttime = date("d:m:Y \H:i:s");
//This is where I get blocked: How do I subtract the updated time on the database to the $currenttime and display it's difference.
恢复我遇到问题的要点:
date("d:m:Y \H:i:s");
是否格式正确。我确实在stackoverflow和其他一些网站上搜索了多个问题,但我能找到的只是日期没有生成日期()的例子(2016年5月3日)。
提前谢谢
答案 0 :(得分:1)
不确定日期(" d:m:Y \ H:i:s");格式正确。
更改为此格式date("Y-m-d H:i:s")
,因为 MySQL 会在 YYYY-MM-DD HH:MM:SS中检索并显示 DATETIME 值格式&也很容易转换为strtotime()
如何将1小时添加到当前时间。
以下代码会将当前时间加1小时
$currenttime = date("Y-m-d H:i:s");
$datetobeinsertedindatabase = strtotime("+60 minutes", strtotime($currenttime));
$datetobeinsertedindatabase = date('Y-m-d H:i:s', $datetobeinsertedindatabase);
将数据库上的更新时间减去当前时间。
假设从mysql中检索的时间在此格式 YYYY-MM-DD HH:MM:SS &存储在$test
变量中的代码和用于减法的代码将在
$test = date_create("2017-01-18 13:38:06");
$currenttime = date_create(date("Y-m-d H:i:s"));
$diff = date_diff($test, $currenttime);
差异将存储在$diff
对象中,输出将在
<code>DateInterval Object
(
[y] => 0
[m] => 0
[d] => 0
[h] => 0
[i] => 1
[s] => 20
[weekday] => 0
[weekday_behavior] => 0
[first_last_day_of] => 0
[invert] => 0
[days] => 0
[special_type] => 0
[special_amount] => 0
[have_weekday_relative] => 0
[have_special_relative] => 0
)</code>
并查看一次php date function
答案 1 :(得分:0)
取决于MySQL。 MySQL随处可用,几乎可以为所有东西提供非常方便的功能。我将在这个答案中使用纯文本脚本,将mysqli翻译为练习。
我喜欢Unix时间戳,32位整数的计算速度快而且清晰(对我而言),但你也可以使用MySQL函数进行日期 - 字符串操作。帮自己一个忙,安装HeidiSQL并浏览日期和时间函数引用(DATE_ADD中的 F1 )。您也可以使用MySQL获取当前时间。
使用整数时间戳:
SELECT UNIX_TIMESTAMP('2016-12-31 23:59:59') --convert string to integer
SELECT FROM_UNIXTIME(59) --convert integer to string
SELECT FROM_UNIXTIME($integerTimestamp + 3600) --adding an hour
SELECT UNIX_TIMESTAMP()-$integerTimestamp --how many seconds have elapsed?
使用日期时间/字符串值:
SELECT DATE_SUB(NOW(),INTERVAL 1 HOUR)
SELECT DATE_ADD('1970-01-01 23:59:59',INTERVAL 7 DAY)
同样的表达式也适用于INSERT语句。