![](/img/trans.png)
[英]Calculate difference of months and semi-month difference between two dates using 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>
您甚至可以指定您想要的差異,如上面指定的days
、 months
、 years
、 seconds
。
參考: 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.