需要在JQuery中计算两个日期之间的月份

时间:2016-10-05 04:59:29

标签: javascript php jquery

我需要计算两个日期之间几个月和几年的总数,如果不是几个月的任何php片段或以太js或jquery。

我使用php标签显示来自后端的数据{{$ job-> job_start_date}} job_start_date用于开始日期,{{$ job-> job_expiry_date}})job_expiry_date用于结束日期。

我的输出格式为2016年10月13日。 我试过这个东西把值隐藏起来,但是在向它们添加新的Date()的同时正确解析它是不行的

$(document).ready(function(){
    var sDate = $("#monthStart").val();
    var nDate = $("#monthEnd").val();

    var sd = new Date(sDate );
    var ed = new Date(nDate );
    ed.setDate(ed.getDate() - sd.getDate());
    alert(monthDiff(sd,ed));
});


function monthDiff(d1, d2) {
    var months;
    months = (d2.getFullYear() - d1.getFullYear()) * 12;
    months -= d1.getMonth() + 1;
    months += d2.getMonth();
    return months <= 0 ? 0 : months;
}

在js jquery或php中需要一个简单的解决方案。

4 个答案:

答案 0 :(得分:2)

function differenceInMonths($startDate, $endDate)
{
    $date1 = new DateTime($startDate);
    $date2 = new DateTime($endDate);

    $interval = date_diff($date1, $date2);

    return $interval->m + ($interval->y * 12) . ' months';
}

这样你就没有了。几个月现在,如果几个月> = 11,您可以计算年数。

答案 1 :(得分:1)

在这种情况下,您可以利用switch(equation[0]) { case '/': case '*': case '+': case '-': //your code break; default: //else statement } 库。

假设您有moment.js格式,例如“1-Sept-2016”,那么我们需要将其转换为日期然后应用时刻。如果您已经Date String,则可以直接应用Date

演示:

moment
var startDate = new Date('01-Sept-2016' );
var endDate   = new Date('30-Oct-2016' );
    
var endMoment   = moment(endDate);
var startMoment = moment(startDate);

 //[days, years, months, seconds, ...]
console.log(endMoment.diff(startMoment, 'months'));

您甚至可以指定所需的差异,例如上面指定的<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.1/moment.js"></script>daysmonthsyears

  

参考:http://momentjs.com/

答案 2 :(得分:0)

function MonthDiff(date1, date2) {
    var Nomonths;
    Nomonths= (date2.getFullYear() - date1.getFullYear()) * 12;
    Nomonths-= date1.getMonth() + 1;
    Nomonths+= date2.getMonth() +1; // we should add + 1 to get correct month number
    return Nomonths <= 0 ? 0 : Nomonths;
}

答案 3 :(得分:0)

这是一个php解决方案:

$noMonth = 1 + (date('Y',strtotime($job->job_expiry_date)) - date('Y',strtotime($job->job_start_date))) * 12   +   (date('m',strtotime($job->job_expiry_date)) - date('m',strtotime($job->job_start_date)))

第一部分计算年份差异,乘以12个结果表示月数:

  

1 +(日期('Y',strtotime($ job-&gt; job_expiry_date)) -   日期('Y',strtotime($ job-&gt; job_start_date)))* 12

第二部分计算要添加或减去的月数,就好像日期是在同一年:

  

(日期('m',strtotime($ job-&gt; job_expiry_date)) -   日期( 'M',的strtotime($求职&GT; job_start_date)))