Javascript 如何在不考虑年份的情况下找出日与月之间的天数差异
我想知道两个日期之间的区别,不管是哪一年 例如:设置日期/月/年的格式 例如,今天的日期与某个日期的差异让我们以01/06为例 对此的预期答案将是185天左右 我试过下面的例子。让我知道这有什么问题Javascript 如何在不考虑年份的情况下找出日与月之间的天数差异,javascript,date,momentjs,Javascript,Date,Momentjs,我想知道两个日期之间的区别,不管是哪一年 例如:设置日期/月/年的格式 例如,今天的日期与某个日期的差异让我们以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);
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 atmost。如果可以用javascript来完成,那对我来说就太好了。一个很好的技巧就是将年份设置为始终不变
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之间的区别?你必须考虑如何解决这个问题。 < P>一个很好的诀窍是把一年定为相同的。
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之间的区别?你必须考虑如何解决这个问题。 < P > 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);
也有设置小时/分钟/秒的方法,但如果你不做任何事情,它们将与开始时间相同,如果你今天不想使用,显然可以在开始时间调用这些相同的方法。巴特·萨莱夫斯基(Barth Zalewski)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);
也有设置小时/分钟/秒的方法,但如果你不做任何事情,它们将与开始时间相同,如果你今天不想使用,显然可以在开始时间调用这些方法。可以尝试使用以下方法:
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日也将被计算在内
您可以尝试使用以下方法:
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日也将被计算在内
如果是今年,那么我使用一个不依赖javascript对象的库得到了147的差异,这一切都是通过纯数学完成的 require.config{ 路径:{ “astrodate”:“//rawgit.com/Xotic750/astrodate/master/lib/astrodate” } }; 需要['astrodate'],函数astrodate{ 严格使用; var diff=新天文日期2015,6,1.jd-新天文日期2015,1,5.jd; document.body.appendChilddocument.createTextNodediff; };
如果是今年,那么我使用一个不依赖javascript对象的库得到了147的差异,这一切都是通过纯数学完成的 require.config{ 路径:{ “astrodate”:“//rawgit.com/Xotic750/astrodate/master/lib/astrodate” } }; 需要['astrodate'],函数astrodate{ 严格使用; var diff=新天文日期2015,6,1.jd-新天文日期2015,1,5.jd; document.body.appendChilddocument.createTextNodediff; };
但是你怎么知道你是否需要在2月29日之前和之后的几天里增加闰年呢?我同意约瑟夫的评论。如果不知道年份,你就无法准确回答。您还需要考虑包装和订购。例如,给定12/31和01/01,它们是相隔1天还是364天?如果你能将一个日期固定到一个特定的年份,比如你的例子中的今天,并且你可以断言你想要下一个月/天的实例,那么你可以解决这两个问题-但你仍然必须与2月29日抗争,这可能在今年或明年都不存在。但是你怎么知道你是否需要在2月29日之前和之后的几天内添加闰年日呢?我同意约瑟夫的评论。如果不知道年份,你就无法准确回答。您还需要考虑包装和订购。例如,给定12/31和01/01,它们是相隔1天还是364天?如果您可以将一个日期固定到一个特定的年份,例如您的示例中的今天,并且您可以断言您想要下一个月/天的实例,那么您可以解决这两个问题-但是您仍然必须处理2月29日,这可能在当前或明年不存在。