获取格式为yyyy-mm-ddT00:00:00的javascript中的今天日期

获取格式为yyyy-mm-ddT00:00:00的javascript中的今天日期,javascript,Javascript,您好,我是javascript新手,我尝试了很多,但无法获得此格式 yyyy-mm-ddT00:00:00,我想用java脚本获取此格式,将其与数组中的其他日期进行比较,然后获取下一个有效日期 还有,如果有人能告诉我一个函数,关于如何比较和获得比今天更接近的日期 datesarray = ['2017-12-09T00:00:00' ,'2017-12-13T00:00:00' ,'2017-12-02T00:00:00' ,'2017-12-16T00:00:00'] let diffDat

您好,我是javascript新手,我尝试了很多,但无法获得此格式 yyyy-mm-ddT00:00:00,我想用java脚本获取此格式,将其与数组中的其他日期进行比较,然后获取下一个有效日期

还有,如果有人能告诉我一个函数,关于如何比较和获得比今天更接近的日期

datesarray = ['2017-12-09T00:00:00' ,'2017-12-13T00:00:00' ,'2017-12-02T00:00:00' ,'2017-12-16T00:00:00']

let diffDate = Infinity;
let now = Date.now;

for (let i = 0; i < datesarray.length; i++) {

            let closest = datesarray[0]; 
            if (closest > now && closest < diffDate)
            {
                diffDate = closest;
            }

}
datesarray=['2017-12-09T00:00:00'、'2017-12-13T00:00:00'、'2017-12-02T00:00:00'、'2017-12-16T00:00:00']
让diffDate=无穷大;
让现在=Date.now;
for(设i=0;i现在和最近
这是我尝试过的,但它从未进入if语句。
PS:数组中还有其他日期,但我没有在这里显示它们。

对于第一个问题,请使用Date对象的ISOString()函数

对于下一个,可以创建每次的日期对象,然后进行比较,或者如果需要支持相等性检查,可以将日期对象中的所有值转换为毫秒。

使用
date()
对象。有许多不同的方式输入日期。一个是你正在使用的

var dateArray = [new Date('2017-12-09T00:00:00'), new Date(2017, 11, 13), new Date(2017, 11, 2), new Date(2017, 11, 16)];
var today = new Date();
var closestDate = new Date(5000, 0, 0); 
for (var i = 0; i < dateArray.length; i++) {
    var curr = dateArray[i];
    if(curr > today && curr < closestDate) {
        closestDate = new Date(curr);
    }
}
console.log(closestDate); // Prints Sat Dec 02 2017 00:00:00 GMT-0500 as of 10/19/2017
var dateArray=[新日期('2017-12-09T00:00:00')、新日期(2017,11,13)、新日期(2017,11,2)、新日期(2017,11,16)];
var today=新日期();
var closestDate=新日期(5000,0,0);
对于(var i=0;i今天&&curr
我想您这里有两个独立的问题,要获得您将使用的iso格式的日期字符串,但要比较日期并找到最接近的日期,您需要将这些字符串转换为日期对象并进行比较

let datesArray=['2017-12-09T00:00:00'、'2017-12-13T00:00:00'、'2017-12-02T00:00:00'、'2017-12-16T00:00:00';
让diffDate=无穷大;
让现在=Date.now();
for(设i=0,len=datesArray.length;i现在和最近log(diffDate.toISOString())
let latest=2017-12-09T00:00:00
=boom,语法错误(缺少引号)。不要重新发明轮子并使用。。。类似于
moment().format(“yyyy-mm-ddT00:00:00”)
请检查编辑@杰里米查过了,是吗?没有任何变化,日期仍然没有引号
Uncaught SyntaxError:Invalid or unexpected token
您可以查看此链接:或此链接:isostring修复了它,但现在问题的另一部分:)@nino9612谢谢,isostring()保存了第一个问题,第二个问题您可以更清楚地了解您编写的内容吗。谢谢,只需在每次比较中添加一个新的日期(Date),然后再进行基本比较。这是迄今为止最好的答案,但变量diffDate没有显示值,其未定义。有没有其他东西我可以用,除了无限我在数组中看不到这个日期。2017-12-01T23:00:00.000Z??!!当我运行snipp代码时,该日期也不在我复制的示例数组中?等等,我想我明白你的意思了。你的时区是否恰好在UTC-1?