如何查看日期是否晚于8天?

时间:2010-07-08 10:28:35

标签: php mysql date timestamp compare

我有一个字符串字段(并且我不能更改这个,因为日期格式)在mysql数据库上包含一个日期(如:“01-03-2010”),我想如果今天的日期比8天更新,则设定比较该日期的功能并返回true;如果日期低于或大于今天的日期,则返回false ...

示例:

01-03-2010 < (08-06-2010(Today) - 8days) - return true
01-06-2010 < (08-06-2010(Today) - 8days) - return false
31-05-2010 < (08-06-2010(Today) - 8days) - return true

我知道我可以将字符串“01-03-2010”转换为PHP上的strtotime()函数的时间戳,但是我不知道如何从今天的时间戳中移除8天...:s < / p>

提前致谢

8 个答案:

答案 0 :(得分:10)

strtotime(time_str) < strtotime("-8 day")

答案 1 :(得分:3)

在php中删除8天你可以做到:

$date_less_8 = time() - (8*24*60*60);

你可以检查mysql查询,如:

DayDate < DATE_SUB(CONCAT(CURDATE(), ' 00:00:00'), INTERVAL 8 DAY)

答案 2 :(得分:2)

答案 3 :(得分:1)

$newDate = strtotime('31-05-2010'.' -8 days');
echo date('d-F-Y',$newDate);

$eightdaysagoDate = strtotime('-8 days');
echo date('d-F-Y',$eightdaysagoDate);

答案 4 :(得分:1)

这仍然可以使用STR_TO_DATE(string, format)函数在MySQL内部处理:

SELECT 
  *, STR_TO_DATE(dateColumn, '%d-%m-%y') < CURDATE() - INTERVAL 8 DAY as eightdaysold 
FROM myTable

答案 5 :(得分:0)

检查mysql的TO_DAYS

TO_DAYS(DATE) - TO_DAYS('2010-03-01')) < 8

答案 6 :(得分:0)

我倾向于在我的应用程序中使用这些定义:

//Time Settings
if(!defined('SECOND'))  define('SECOND',  1);
if(!defined('MINUTE'))  define('MINUTE',  60  * SECOND);
if(!defined('HOUR'))      define('HOUR',    60  * MINUTE);
if(!defined('DAY'))    define('DAY',     24  * HOUR);
if(!defined('WEEK'))      define('WEEK',     7  * DAY);
if(!defined('MONTH'))     define('MONTH',   30  * DAY);
if(!defined('YEAR'))      define('YEAR',    365 * DAY);

然后

if($user_time < (time() - (DAY*8)))
{
   //Whoopsie
}

答案 7 :(得分:0)

使用PHP&gt; = 5.3,您可以使用新的闪亮DateTime对象(http://fr2.php.net/manual/fr/datetime.modify.php):

$date_from_mysql = new DateTime(/*put your date from mysql here, format yyyy-mm-dd*/);

$date_today = new DateTime();

$date_8_days_ago = new DateTime()
$date_8_days_ago->modify("-8 days");

if(($date_8_days_ago <= $date_from_mysql) && ($date_from_mysql <= $date_today)) {
  /* your date from mysql is between today and 8 days ago */
} else if($date_from_mysql <= $date_8_days_ago) {
  /* your date from mysql is before 8 days ago */
} else {
  /* your date is in the future */
}