php比较日期的变化
我已经找到了数百个与此类似的问题和答案,但是,没有一个符合我的具体需求,我感到困惑 我有一个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大师擅长的!期待您的回复 更新 我认为这是: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(当前时间)进行
$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 />";
}