取当前MYSQL时间戳并从24小时中减去它


Take Current MYSQL Timestamp And Subtract It From 24 Hours

有一件事一直让我感到困惑,那就是编码中的时间。我对如何去做这件事感到非常困惑!简单地说,我有一个MySql时间戳,我想从24小时中减去它。

基本上,我试图编码的东西,只让你完成一个动作每24小时一次,然后,如果他们试图完成它,然后一次,它会告诉他们多久,他们必须等待再做一次。

这是我目前拥有的代码:

$dailylogincheck = 2015-08-16 13:30:32 //MySQL Timestamp
date_default_timezone_set("America/New_York");
$lastloginbonus = new DateTime($dailylogincheck);
$currenttime = $lastloginbonus->diff(new DateTime(date("Y-m-d H:i:s")));

我不需要使用这段代码(如果有更好的方法)。所以我只是想从24小时减去当前的时间戳,但我不知道如何在PHP中做到这一点:(请帮助!

注:我只是想显示如下的句子:You have already done this within the past 24 hours. Please come back in X hours X minutes and try again.

希望这行得通:-)

   <?php

$dailylogincheck = '2015-08-16 13:30:32';
$end = new DateTime($dailylogincheck);
$end->add(new DateInterval('P1D'));//add 1 day to find end date
$now = new DateTime('now');
$interval = $end->diff($now);
if($end->diff($now)->days >= 1){
 echo 'go for it'; 
}else{
echo $interval->format('%H hours, %i minutes until you can XXX');
}

正如Dagon所说,在mysql中这样做是最好的方法…但是为了解决你的php问题,DateTime将接受一些简单的修饰符:

<?php
$lastBonus = new DateTime("-1 day"); // Last bonus was exactly 24 hours ago
$canNotGetNewBonus = new DateTime("-1 hour"); // Attempting another bonus 23 hours later
$canGetNewBonus = new DateTime("+1 hour"); // Attempting another bonus 25 hours later
var_dump($lastBonus->diff($canNotGetNewBonus)->days >= 1);
var_dump($lastBonus->diff($canGetNewBonus)->days >= 1);