簡體   English   中英

需要在 JQuery 中計算兩個日期之間的月份

[英]Need to calculate months between two dates in JQuery

我需要以月份和年份計算兩個日期之間的月份總數,如果不僅僅是月份,任何 php 代碼片段或 ether js 或 jquery。

我使用 php 標簽顯示來自后端的數據 {{ $job->job_start_date }} job_start_date 是開始日期,而 {{ $job->job_expiry_date }}) job_expiry_date 是結束日期。

我在 2016 年 10 月 13 日以這種格式得到我的輸出。 我試過這件事,將值隱藏,但在向它們添加 new 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 中需要一個簡單的解決方案。

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,您可以計算年數。

那么在這種情況下,您可以利用moment.js庫。

假設您的Date String格式為“1-Sept-2016”,那么我們需要將其轉換為日期,然后應用時刻。 如果您已經有了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>

您甚至可以指定您想要的差異,如上面指定的daysmonthsyearsseconds

參考: http : //momentjs.com/

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;
}

這是一個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 + (date('Y',strtotime($job->job_expiry_date)) - 日期('Y',strtotime($job->job_start_date))) * 12

第二部分計算要添加或減去的月數,就好像日期在同一年一樣:

(日期('m',strtotime($job->job_expiry_date)) - 日期('m',strtotime($job->job_start_date)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM