Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在不考虑年份的情况下找出日与月之间的天数差异_Javascript_Date_Momentjs - Fatal编程技术网

Javascript 如何在不考虑年份的情况下找出日与月之间的天数差异

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

我想知道两个日期之间的区别,不管是哪一年

例如:设置日期/月/年的格式

例如,今天的日期与某个日期的差异让我们以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 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日,这可能在当前或明年不存在。