【问题标题】:Take Current MYSQL Timestamp And Subtract It From 24 Hours获取当前的 MYSQL 时间戳并从 24 小时中减去它
【发布时间】:2015-08-16 23:34:38
【问题描述】:

一直让我感到困惑的一件事是编码时间。我对如何去做这件事感到很困惑!简单地说,我有一个 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.

【问题讨论】:

  • 你完全可以用 mysql select date_field -INTERVAL 1 DAY as bingo ..
  • @Dagon,你好 :) 我试图简单地向用户显示他们必须等待多长时间的消息。
  • ahhhh 好的,我稍后会发布解决方案
  • 好的,谢谢@Dagon!
  • 没问题@DanielKrom。

标签: php mysql timestamp


【解决方案1】:

希望这可行:-)

   <?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,在做了一些测试之后出了点问题:(例如,如果时间戳是 3 分钟,它将返回:00 hours, 3 minutes。但它应该返回23 hours, 57 minutes
  • @MichaelJones 已修复,检查一下
  • 谢谢!我会测试一下这个
  • 完美运行! TY :D
【解决方案2】:

正如 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);

【讨论】:

  • 可能通过烦人得到,X 小时和 Y 分钟,超出 MySQL 日期比较 php 的 DateTime 类更容易
猜你喜欢
  • 2013-09-18
  • 2020-12-10
  • 1970-01-01
  • 1970-01-01
  • 2018-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多