php比较日期的变化

php比较日期的变化,php,date,comparison,datetime-comparison,Php,Date,Comparison,Datetime Comparison,我已经找到了数百个与此类似的问题和答案,但是,没有一个符合我的具体需求,我感到困惑 我有一个y-m-d格式的变量,我需要查看它是否在前一个日历日创建(不是前24小时,而是前一个日历日) 即。 $tDate='12-05-2' 如果对象是在2012年5月2日晚上11:59(存储时间)创建的,我需要将其与2012年5月3日上午12:01(当前时间)进行比较,以使其等于true 如果对象是在2012年5月2日晚上11:51(存储时间)创建的,我需要将其与2012年5月2日晚上11:58(当前时间)进行

我已经找到了数百个与此类似的问题和答案,但是,没有一个符合我的具体需求,我感到困惑

我有一个y-m-d格式的变量,我需要查看它是否在前一个日历日创建(不是前24小时,而是前一个日历日)

即。 $tDate='12-05-2'

如果对象是在2012年5月2日晚上11:59(存储时间)创建的,我需要将其与2012年5月3日上午12:01(当前时间)进行比较,以使其等于true

如果对象是在2012年5月2日晚上11:51(存储时间)创建的,我需要将其与2012年5月2日晚上11:58(当前时间)进行比较,使其等于false

我知道,如果这些数据存储在MySQL数据库中,并从字段中提取,MySQL可以很容易地找到答案。然而,在这种情况下,该解决方案不是一种选择

这种比较必须完全用php完成

我知道这是一个古怪的问题,但嘿,这正是StackOverflow大师擅长的!期待您的回复

更新

我认为这是:

    $dTest = '12-05-02';
    $dTest = explode('-',$dTest);
    $dTest2 = date('y-m-d');
    $dTest2 = explode('-',$dTest2);

    if ($dTest[2]<$dTest2[2]){
        echo '<br />Posted Yesterday<br />';
    } else {
        echo '<br />Posted Today<br />';
    }
$dTest='12-05-02';
$dTest=爆炸('-',$dTest);
$dTest2=日期('y-m-d');
$dTest2=爆炸('-',$dTest2);

如果($dTest[2]首先-我认为你的“解决方案”不起作用。如果今天的日期是2001年6月12日,而帖子是31年5月12日,会发生什么情况-它会给出错误的答案,因为“31”>“1”

无论如何,我认为正确的答案是:

$yesterday =date("y-m-d", strtotime("yesterday"));
$today = date("y-m-d", strtotime("today"));


if ($yesterday === $tDate)
{
   echo "this was yesterdays post";
}
elseif ($today === $tDate)
{
   echo "this was todays post";
}
else
{
    echo "this was NOT yesterday or today":
}

您可以将两个日期转换为UNIX时间,然后将其作为整数进行比较:

$day_start = strtotime('-1 day', mktime(0, 0, 0);
$day_finish = strtotime('-1 day', mktime(23, 59, 59);

$dT = strtotime('-1 day', $dTime)

if($dT > $day_start && $dT < $day_finish) {
 var_dump($dT);
} else {
 exit;
}
$day\u start=strotime('-1天',mktime(0,0,0);
$day_finish=strotime('-1天',mktime(23,59,59);
$dT=标准时间('-1天,$dTime)
如果($dT>$day\u开始和$dT<$day\u结束){
var_dump($dT);
}否则{
出口
}

如果您正在查找“X天前发布的”:

$datetime1=新日期时间('2012-05-01');
$datetime2=新日期时间('2012-05-02');
$interval=(int)$datetime1->diff($datetime2)->格式(“%a”);
交换机($间隔){
案例0:
echo“今日发布
”; 打破 案例1: echo“在前一天发布$interval
”; 打破 违约: echo“在几天前发布了$interval
”; }
将其计算为:$dTest='12-05-02';$dTest=explode('-',$dTest);$dTest2=date('y-m-d');$dTest2=explode('-',$dTest2);if($dTest[2]Gah,代码格式在注释中不起作用!我今天将测试这些答案,并选择最佳答案。在每次发送扫描代码片段后,它们都能很好地比较我所寻找的日期。同样,我会很快接受/发布我的结果!不-因为这只说明日期是否在前几天之前/之后-如果我“昨天”必须进行一些编辑,保存在中并更新问题。谢谢!我喜欢你的解决方案,但有一个问题。如果第二个日期是昨天或明天(两种情况下都是1),没有区别
$day_start = strtotime('-1 day', mktime(0, 0, 0);
$day_finish = strtotime('-1 day', mktime(23, 59, 59);

$dT = strtotime('-1 day', $dTime)

if($dT > $day_start && $dT < $day_finish) {
 var_dump($dT);
} else {
 exit;
}
$datetime1 = new DateTime('2012-05-01');
$datetime2 = new DateTime('2012-05-02');
$interval = (int)$datetime1->diff($datetime2)->format('%a');
switch ($interval) {
    case 0:
        echo "Posted Today<br />";
        break;
    case 1:
        echo "Posted $interval day ago<br />";
        break;
    default:
        echo "Posted $interval days ago<br />";
}