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 - Fatal编程技术网

获取月差,并在javascript中以数组形式列出两个日期之间的月

获取月差,并在javascript中以数组形式列出两个日期之间的月,javascript,date,Javascript,Date,我有两个日期,格式如下,我需要得到它们之间的月数。我尝试了: 但格式与我的不匹配。有人能提出一个解决方案吗 startDate:"2015-09-07", endDate: "2015-12-30" 我还需要显示日期之间的月份,如: var months=["sept","oct","nov","dec","jan","feb"] 好吧,你总是可以拆分字符串并像这样使用月份: var startDate = startDate.split("-"); var endDate= endDa

我有两个日期,格式如下,我需要得到它们之间的月数。我尝试了: 但格式与我的不匹配。有人能提出一个解决方案吗

 startDate:"2015-09-07",
 endDate: "2015-12-30"
我还需要显示日期之间的月份,如:

var months=["sept","oct","nov","dec","jan","feb"]

好吧,你总是可以拆分字符串并像这样使用月份:

var startDate = startDate.split("-");
var endDate= endDate.split("-");
var MonthDifference = endDate[1] - startDate[1];
例如,您可以执行以下功能:

function DifferenceInMonths(startDate, endDate){
    startDate= startDate.split("-");
    endDate= endDate.split("-");
    return endDate[1] - startDate[1];
}
但我们面临的问题是,这些日期可能发生在两个不同的年份。如果你想试试这个:

function differenceCalculatedInMonthsByUnix(startDate, endDate){
startDate = new Date(startDate).getTime();
endDate= new Date(endDate).getTime();
var difference = endDate - startDate;
return timeMe(difference);
}

function timeMe(unix_timestamp){
    unix_timestamp = parseInt(unix_timestamp);
    var date = new Date(unix_timestamp);
    var days = date.getDate();
    var month = date.getMonth() + 1;
    var year = date.getFullYear()
    // hours part from the timestamp
    var hours = date.getHours();
    // minutes part from the timestamp
    var minutes = "0" + date.getMinutes();
    // seconds part from the timestamp
    var seconds = "0" + date.getSeconds();
    // will display time in 10:30:23 format
    var formattedTime = days + '.' + month + '.' + year + ' at:' + hours + ':' + minutes.substr(minutes.length-2) + ':' + seconds.substr(seconds.length-2);
    return (12 * year) + month
}
我不确定是我自己做的,还是我从stackOverflow找到的,所以如果有人需要积分,请pm我。
但这其中的想法是,我们将日期转换为unix时间戳,计算差值,并将其转换为月份。

重复这一点:如果您不想自己编写代码,请使用moment.js。他为什么要使用库,这可以在2或3分钟内完成lines@MattWhetton我试过那个链接,但是我正在发送一个月的0。您是如何调用该答案中的代码的?您不知道如何从YYYY-MM-DD格式生成日期吗?为什么我应该将日期视为字符串,并自己解析它,而日期'2015-09-23'将为我完成此操作?在使用的浏览器中,大约20%的浏览器中,新的DatestartDate将返回NaN,所以这不是一个好主意。@torazaburo我相信这个问题不是您提出的,但因为您需要帮助,你可以看到,如果你读了全文,有两种不同的方式做OP想做的事情,都有自己的消极方式