如何检测时间已经过了午夜?

时间:2012-07-29 05:21:01

标签: php time

我用挪威语编写基于文本的黑手党游戏,需要时间检测方面的帮助。所以这是交易。如果玩家购买产品的时间超过午夜(24小时制),则删除mysql记录的方式。这是我尝试过的,但不确定这是最好的方法:

// Har livvakt? (Has bodyguard)
if($this->isTheftProtected($user_id)){
  $sql = mysql_query("SELECT * FROM `UserTing` WHERE t_meta = '2' AND t_owner = '".$user_id."'");
  $rows = mysql_fetch_array($sql);

  $timeThen = date("Hi", $rows["t_time"]);
  $theNow = date("Hi");

  if($timeThen > 0000){
    // Slett produktet <- Delete here... past midnight.
  } else {
    // Behold.
  }
} else {
  return;
}

那么,有没有更好的方法呢?是否应考虑使用时间()?它真的是如何做到这一点,我的问题是。 问候。 ;)

2 个答案:

答案 0 :(得分:1)

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timestampdiff

mysql> SELECT TIMESTAMPDIFF(MINUTE,'2003-02-01','2003-05-01 12:05:55');

返回128885

逻辑上如此;

SELECT * FROM UserTing WHERE TIMESTAMPDIFF(SECOND, NOW(), t_time) >= (60 * 60 * 24) AND t_owner = {$user_id}

为t_owner显示比当前时间早24小时的值。

编辑3:确保您始终使用MySQL与MySQL或PHP进行MySQL时间比较。但不是两者兼而有之,因为两者之间允许的时间差异。 (它们有时会在没有错误的情况下关闭一个小时。)

答案 1 :(得分:1)

您可能需要添加cronjob或在SELECT之前运行此查询以删除旧记录。

DELETE FROM `t1` WHERE DATE(`created`) < CURDATE();

也可以使用JOINS ......