gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 03:14:27 27 4
gpt4 key购买 nike

你好,我是 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;
}

}

这是我尝试过的,但它从未进入 if 语句。PS:我的数组中有其他日期,但我没有在此处显示它们。

最佳答案

我认为您在这里有两个单独的问题,要获取 iso 格式的日期字符串,您可以使用 Date.prototype.toISOString() ,但要比较日期并找到最接近的日期,您需要将这些字符串转换为日期对象并进行比较

let 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, len = datesArray.length; i < len; i++) {
let closest = new Date(datesArray[i]);
if (closest > now && closest < diffDate) {
diffDate = closest;
}
}
console.log(diffDate.toISOString());

编辑 1

在回答您的问题时,我无法使用上面的代码重复您未定义的问题,并且为了说明 diffDate 设置正确,我将其移到循环之外,如果您运行代码片段,您应该看到最接近的日期打印.

话虽这么说,只要现代 JS 语法适用于您的问题,这可能是一种更简洁的方法来处理您的问题。

const datesArray = ['2017-12-09T00:00:00' ,'2017-12-13T00:00:00' ,'2017-12-02T00:00:00' ,'2017-12-16T00:00:00'];
const dateCompare = (closest, current) => {
const t = new Date(current);
return (t > Date.now() && t < closest) ? t : closest;
}
let closest = datesArray.reduce(dateCompare, Infinity)
console.log(closest.toISOString());

编辑2

要处理时区精度问题(如果可能),您希望日期数组具有 iso 格式的日期 'yyyy-mm-ddThh:mm:ssZ' | '2017-12-02T00:00:00Z' 如果您无法编辑日期数组格式,您应该确保在创建日期之前附加该“Z”:new Date(current + 'Z ');

关于javascript - 以 javascript 格式获取今天的日期 yyyy-mm-ddT00 :00:00,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46829944/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com