我需要计算两个日期之间几个月和几年的总数,如果不是几个月的任何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中需要一个简单的解决方案。
答案 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>
,days
,months
,years
。
答案 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)))