使用date()减去日期

时间:2017-01-18 12:47:14

标签: php mysql date

我想知道如何做到这一点:减去通过日期方法获得的两个不同日期。基本上,它是我正在制作的游戏,需要一定的时间来执行一个动作。因此,让我们说用户单击一个按钮,执行查询,发送用户点击数据库的当前时间,稍后,我计划能够显示该操作剩余的时间量完成。

这是"草图":

$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");是否格式正确。
  • 如何将1小时添加到当前时间。
  • 将数据库上的更新时间减去当前时间。

我确实在stackoverflow和其他一些网站上搜索了多个问题,但我能找到的只是日期没有生成日期()的例子(2016年5月3日)。

提前谢谢

2 个答案:

答案 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语句。