我已经在SO上发现了数百个关于主题的问题和答案,但是,没有一个能够满足我的需求,而且我很难过。
我有一个y-m-d格式的变量,我需要查看它是否是在前一个日历日创建的(不是之前的24小时,而是在前一个日历日)。
即。 $ tDate = '12 -05-2';
如果对象在2012年5月2日晚上11:59(存储时间)创建,我需要与2012年5月3日上午12:01(当前时间)进行比较,以等于真。
如果对象创建于2012年5月2日晚上11:51(存储时间),我需要与2012年5月2日晚上11:58(当前时间)进行比较,以等于假。
我知道如果这些存储在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 />';
}
是否有更有效的解决方案?似乎工作,但我认为必须有一个更优化/优雅的解决方案?
的解决 的
$tHolder = '12-05-12';
$voteDate = date("y-m-d", strtotime($tHolder));
$today = date("y-m-d", strtotime("today"));
if ($voteDate === $today)
{
echo "this was today's post";
}
elseif ($voteDate < $today)
{
echo "this was previous to today";
}
答案 0 :(得分:8)
首先 - 我不认为你的“解决方案”有效。当今天的日期是12-06-01并且帖子是在12-05-31时会发生什么 - 它会给出错误的答案,因为“31”&gt; “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":
}
答案 1 :(得分:3)
您可以将两个日期转换为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;
}
答案 2 :(得分:2)
如果你真的在寻找“已发布X天前”:
$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 />";
}
答案 3 :(得分:-1)
您可以使用简单的PHP Date类来实现此目的。
$date = new simpleDate();
echo $date->now()->compare('yesterday')->isEqual();
此方法可以轻松比较。
图书馆中还有其他比较方法。有关更多示例,请查看教程页面。 Click here.