2

我从 YYYY-MM-DD 格式的 mysql 查询中得到一个日期。

我需要确定从当前月份开始是否超过三个月。

我目前有这个代码:

$passwordResetDate = $row['passwordReset'];
$today = date('Y-m-d');

$splitCurrentDate = explode('-',$today);
$currentMonth = $splitCurrentDate[1];

$splitResetDate = explode('-', $passwordResetDate);
$resetMonth = $splitResetDate[1];

$diferenceInMonths = $splitCurrentDate[1] - $splitResetDate[1];

if ($diferenceInMonths > 3) {
    $log->lwrite('Need to reset password');
}

这样做的问题是,如果当前月份是 1 月,例如,给出月份值 01,并且$resetMonth是 11 月,给出月份值 11,那么$differenceInMonths将是 -10,它不会通过 if( ) 陈述。

如何解决此问题以允许上一年的几个月?或者有没有更好的方法来完成整个例程?

4

3 回答 3

1

使用strtotime(),像这样:

$today = time(); //todays date 
$twoMonthsLater = strtotime("+3 months", $today); //3 months later

现在,您可以轻松地比较它们并确定。

于 2013-07-22T16:11:53.600 回答
0

我会为此使用 PHP 的内置DateTimeDateInterval类。

<?php

// create a DateTime representation of your start date
// where $date is date in database
$resetDate = new DateTime($date);

// create a DateIntveral representation of 3 months
$passwordExpiry = new DateInterval('3M');

// add DateInterval to DateTime
$resetDate->add($passwordExpiry);

// compare $resetDate to today’s date
$difference = $resetDate->diff(new DateTime());
if ($difference->m > 3) {
    // date is more than three months apart
}
于 2013-07-22T16:15:47.793 回答
-1

我会在您的 SQL 表达式中进行日期比较。

否则,PHP 有许多函数可以轻松操作日期字符串: PHP:日期/时间函数 - 手册

于 2013-07-22T16:13:39.587 回答