我想知道两个日期之间的区别,无论年份如何......
例如:格式日期/月/年
例如,今天日期与某个日期的差异可以采取01/06
对此的预期答案将是大约185天..
我试过下面的例子。让我知道这个错误是什么
var a = moment('06/01','M/D');
console.log(a);
var b = moment();
console.log(b);
var diffDays = b.diff(a, 'days');
alert(diffDays);
我不想在最近使用momet.js。如果可以用javascript完成它对我这么好。
答案 0 :(得分:3)
一个很好的技巧可能是将年份设置为始终相同。
var a = moment('2015/06/01','Y/M/D');
console.log(a);
var b = moment().set('year', 2015);
console.log(b);
var diffDays = b.diff(a, 'days');
alert(diffDays);
一般来说,关于你的问题的问题是如何应对闰年;脚本应该如何知道2/20和3/1之间的区别?你必须考虑如何解决这个问题。
答案 1 :(得分:1)
Barth Zaleweski是100%正常的。如果你想直接使用javascript:
var today = new Date();
var otherDate = new Date(today);
otherDate.setMonth(5); // Set the month (on scale from 0 to 11)
otherDate.setDate(1); // set day
var seconds = (otherDate.getTime() - today.getTime()) / 1000;
var minutes = seconds / 60;
var hours = minutes / 60;
var days = hours / 24;
console.log(days);
也有设置小时/分钟/秒的方法,但是如果你不做任何事情,他们将与开始时相同,你显然可以在开始时间调用相同的方法如果你今天不想使用它。
答案 2 :(得分:0)
可以试试这个:
var str1 = '06/01', str2 = '02/28', d1, d2, diff;
function setDate(str, date) {
var date = new Date(),
dateParts = str.split('/'),
monthIndex = parseInt(dateParts[0], 10) - 1,
day = parseInt(dateParts[1], 10);
date.setMonth(monthIndex);
date.setDate(day);
return date
}
d1 = setDate(str1);
d2 = setDate(str2);
diff = Math.round(Math.abs((d1 - d2) / (24 * 60 * 60 * 1000)))
console.log(diff) // returns 93
舍入是由于夏令时(或一年中的其他区域时间变化)的差异导致返回的十进制值。
最好将UTC用于此
如果当前年份是闰年,日期跨越2月底,那么2月29日也将计算
的 DEMO 强>
答案 3 :(得分:0)
如果是今年,那么我使用我一直在处理的图书馆(AstroDate
)获得了147
的差异,而这些图书馆并不依赖于javascript' { {3}}对象,它都是用纯数学完成的。
require.config({
paths: {
'astrodate': '//rawgit.com/Xotic750/astrodate/master/lib/astrodate'
}
});
require(['astrodate'], function (AstroDate) {
"use strict";
var diff = new AstroDate("2015","6","1").jd() - new AstroDate("2015","1","5").jd();
document.body.appendChild(document.createTextNode(diff));
});

<script src="http://requirejs.org/docs/release/2.1.8/minified/require.js"></script>
&#13;
如果是明年,这是闰年,那么我得到148
require.config({
paths: {
'astrodate': '//rawgit.com/Xotic750/astrodate/master/lib/astrodate'
}
});
require(['astrodate'], function (AstroDate) {
"use strict";
var diff = new AstroDate("2016", "6", "1").jd() - new AstroDate("2016", "1", "5").jd();
document.body.appendChild(document.createTextNode(diff));
});
&#13;
<script src="http://requirejs.org/docs/release/2.1.8/minified/require.js"></script>
&#13;