Php从现在到日期之间的天数

Php从现在到日期之间的天数,php,Php,我通过post将预订信息从php发送到javascript。使用floor($eventTime/(60*60*24))-floor(time()/(60*60*24))我根据事件发生的日期告诉javascript代码将事件放在何处$eventTime是unix时间戳。E.x.21日的任何日期都应该放在方框1中,22日的任何一天都应该放在方框2中,等等。我做错了什么?以小时为单位的时间会影响预订显示在哪一天,19日和20日的活动是混合的,等等,但我使用的楼层是以天为单位的,所以我不明白。要明确的

我通过post将预订信息从php发送到javascript。使用
floor($eventTime/(60*60*24))-floor(time()/(60*60*24))我根据事件发生的日期告诉javascript代码将事件放在何处
$eventTime
是unix时间戳。E.x.21日的任何日期都应该放在方框1中,22日的任何一天都应该放在方框2中,等等。我做错了什么?以小时为单位的时间会影响预订显示在哪一天,19日和20日的活动是混合的,等等,但我使用的楼层是以天为单位的,所以我不明白。要明确的是,我想要从现在到另一个日期的天数,但不包括或考虑小时/分钟。因此,如果今天是10号,那么10号的任何预订无论在什么时间(00:00:00-23:59:59)都应该将其“timeFrom”变量表示为0。在本例中,10号和11号的日期都将0作为“days between”变量发送,此时10号应为0,11号应为1

下面是相关的php

while ($appResult = $stmt->fetch(PDO::FETCH_ASSOC))
{
    $tz = new DateTimeZone('America/Chicago'); // maybe this comes from the client side
    $now = new DateTime('now', $tz);
    $eventTime = new DateTime($appResult["time"], $tz);
    $now->setTime(0, 0);
    $eventTime->setTime(0, 0);
    $diff = $now->diff($eventTime);
    $days = $diff->d;
    $postString .= $days;
    $postString .= ".";
    $postString .= $appResult['id'];
    $postString .= ".";
    $postString .= date("H.i",strtotime($appResult['time']));
    $postString .= ".";
    $postString .= $appResult['members'];
    $postString .= ".";
    $postString .= $appResult['admin'];
    $postString .= ".";
    $postString .= $appResult['message'];
    $postString .= ".";
    $postString .= $appResult['tools'];
    $postString .= ".";
    $postString .= $appResult['location'];
    $postString .= ".";
    $postString .= $appResult['time'];
    $postString .= ".";
    $postString .= $appResult['userCount'];
    $postString .= ".";
    $postString .= $appResult['class'];
    $postString .= "!";
}
以及相关的jquery

function(data)
{
    $(".eventContainers > div:not(.eventHeaders) ").children().remove();
    var dateDays = data.split("@")[0].split(",");
    var appointments = data.split("@")[1].split("!")
    var resultsContainer = $(".eventHeaders");
    for(var i = 0; i < 5; i++)
    {
       $(resultsContainer[i]).find(".eventDay").text(dateDays[i].split(".")[0]);
       $(resultsContainer[i]).find(".eventWeek").text(dateDays[i].split(".")[1]);
    }
    for(var i = 0; i < $(appointments).size() - 1; i++)
    {
       var inEvent = false;
       for(var j = 0; j < $(appointments[i].split(".")[4].split(",")).size(); j++)
       {
        if(appointments[i].split(".")[4].split(",")[j] == id)
        inEvent = true;
       }
       var appendString = "";
       var parentStyle;
       var buttonStyle;
       var clicked;
       var style = ['style="background-image:url(\'appAdd.png\')"','style="background-color:rgba(0,0,0,0.15)"','style="background-image:\\\'\\\'"','style="background-color:rgba(0,0,0,0.3)"'];
       if(inEvent)
       {
          clicked = "true";
          parentStyle = style[1];
          buttonStyle = style[0];
       }
       else
       {
          clicked = "false";
          parentStyle = style[3];
          buttonStyle = style[2];
       }
       appendString += "<div id='" + appointments[i].split(".")[1] + "' class='appointmentIndivContainer' " + parentStyle + "><div class='appointmentJoinButton' " + buttonStyle + "></div><p class='appointmentTime'>" + getTime(appointments[i].split(".")[2], appointments[i].split(".")[3]) + "</p><p class='appointmentLocation'>" + appointments[i].split(".")[8].replace(/\+/g, ' ') + "</p>   <p class='dataContainers admin'>" + appointments[i].split(".")[5] + "</p>      <p class='dataContainers message'>" + appointments[i].split(".")[6].replace(/\+/g, ' ') + "</p>    <p class='dataContainers tools'>" + appointments[i].split(".")[7].replace(/\+/g, ' ') + "</p>     <p class='dataContainers userCount'>" + appointments[i].split(".")[9] + "</p><p class='dataContainers class'>" + appointments[i].split(".")[10] + "</p><p class='dataContainers clicked'>" + clicked + "</p><p class='dataContainers members'>" + appointments[i].split(".")[4].replace(/,/g, ', ') + "</p><p class='dataContainers daysFrom'>" + appointments[i].split(".")[0] + "</p></div>";


       switch (appointments[i].split(".")[0])
       {
          case "0":
          $("#dayOneEvents").append(appendString);
          break;
          case "1":
          $("#dayTwoEvents").append(appendString);
          break;
          case "2":
          $("#dayThreeEvents").append(appendString);
          break;
          case "3":
          $("#dayFourEvents").append(appendString);
          break;
          case "4":
          $("#dayFiveEvents").append(appendString);
          break;
          }
      }

  });
功能(数据)
{
$(“.eventContainers>div:not(.eventHeaders)”).children().remove();
var dateDays=data.split(“@”)[0]。split(“,”;
var约会=数据。拆分(“@”)[1]。拆分(!”)
var resultcontainer=$(“.eventHeaders”);
对于(变量i=0;i<5;i++)
{
$(resultContainer[i]).find(“.eventDay”).text(dateDays[i].split(“.”[0]);
$(resultContainer[i]).find(“.eventWeek”).text(dateDays[i].split(“.”[1]);
}
对于(变量i=0;i<$(约会).size()-1;i++)
{
var inEvent=假;
对于(var j=0;j<$(约会[i]。拆分(“.”[4]。拆分(“,”))。大小();j++)
{
如果(约会[i]。拆分(“.”[4]。拆分(“,”[j]==id)
inEvent=真;
}
var appendString=“”;
var-parentStyle;
var buttonStyle;
var单击;
var style=['style=“background image:url(\'appAdd.png\”)”,'style=“background color:rgba(0,0,0,0.15)”,'style=“background image:\\\'\\\'”,'style=“background color:rgba(0,0,0,0.3)”;
如果(无事件)
{
单击=“真”;
parentStyle=style[1];
按钮样式=样式[0];
}
其他的
{
单击“假”;
parentStyle=style[3];
按钮样式=样式[2];
}
appendString+=“

”+getTime(约会[i]。拆分(“.”[2],约会[i]。拆分(“.”[3])+”

“+约会[i]。拆分(“.”[8]。替换(/\+/g)”)+“

+Appoints[i]。拆分(“[5]+”

[i] .split(“.”[6]。替换(/\+/g”,)+“

”+appointment[i]。拆分(“.”[7]。替换(/\+/g,)+”

“+appointment[i]。拆分(“.”[9]+”

+appointment[i]。拆分(“.”[10]+“

]“

”+约会[i]。拆分(“.”[4]。替换(/,/g,”)+”

”+约会[i]。拆分(“.”[0]+”

”; 切换(约会[i]。拆分(“.”[0]) { 案例“0”: $(“#dayOneEvents”).append(appendString); 打破 案例“1”: $(“#daytowevents”).append(appendString); 打破 案例“2”: $(“#daytreeevents”).append(appendString); 打破 案例“3”: $(“#dayFourEvents”).append(appendString); 打破 案例“4”: $(“#dayFiveEvents”).append(appendString); 打破 } } });

}获取时间差(以天为单位)的最简单方法是使用

当然,这只能得到两个日期/时间之间的实际天数。对象中还有大量其他与时间间隔相关的信息(
$diff
),例如

更新 要使用每个日期的开始日期,请在调用
diff()
之前使用此选项

$now->setTime(0, 0);
$eventTime->setTime(0, 0);

$diff = $now->diff($eventTime);
$days = $diff->d;

注意:如果您的日期间隔超过夏令时阈值,您可能仍然会遇到问题。

更准确地说,在进行除法和地板()之前,您应该先休息一下。 问题可能是楼层功能所做的调整。我会这样做:

floor(($eventTime-time())/(60*60*24))

您可以使用strotime函数获取任何日期的时间戳,如下所示

    $current_time = strtotime(date('d-m-Y g:i:s A')); // timestamp of current date/time

    $your_last_date = "10-Jan-2014";
    $last_time = strtotime($your_last_date);


//subtract them

$sub_time = $current_time - $last_time;

// divide by timestamp of 1 day which is 60*60*24 = 86400;
// you will get the days

$days = floor($sub_time/86400); // no of days between previous date and now

需要更多信息。错误结果的例子是什么?我编辑过。没有任何方法可以包含更多信息。这会告诉我时间和分钟,还是2014-10-10 10:10:10和2014-10-11 10:10:10:10之间的差异与2014-10-10:10:10和2014-10-11 00:00之间的差异相同?@CraigPatrickLafferty您可以从
$diff
对象中获得更多信息。请查看我的更新答案我需要今天00:00:00和预订日00:00:00之间的天数差。请查看我对HectorIP答案的评论。@CraigPatrickLafferty您能用代码示例编辑您的问题吗?如果我这样做,今天的时间是晚上10点,我会根据预订日期是在晚上10点之前还是之后得到不同的数字。我需要一个只取决于日期的数字,而不是时间。我不想要两天之间的天数。我给出了一个遵循我想使用的逻辑的代码示例。我只想知道为什么它不起作用。我想知道e从今天开始的天数。
floor(($eventTime-time())/(60*60*24))
    $current_time = strtotime(date('d-m-Y g:i:s A')); // timestamp of current date/time

    $your_last_date = "10-Jan-2014";
    $last_time = strtotime($your_last_date);


//subtract them

$sub_time = $current_time - $last_time;

// divide by timestamp of 1 day which is 60*60*24 = 86400;
// you will get the days

$days = floor($sub_time/86400); // no of days between previous date and now