首页 > 解决方案 > 使用 getTime() 转换日期数组

问题描述

这是我正在做的一个项目中的一段代码,我必须将日期转换为 getTime() 函数并将它们推送到一个新数组中,但是每次我这样做时,新数组都会打印为 NaN,我希望获得一些洞察我做错了什么以及如何解决这个问题。万分感谢 :)

dates = ["28/7/2020", "28/3/2020", "28/1/2020", "28/10/2020"]
// const MAX = dates[0]
//  const MIN = dates[dates.length - 1];
const dateArr = [];
const DAY_IN_MS = 24 * 60 * 60 * 1000


for (i = 0; i < dates.length; i++) {
  d = new Date(dates[i])
  dateInMs = d.getTime();
  parseInt(dateInMs);
  console.log(dateInMs);
  dateArr.push(dateInMs);
}
<!DOCTYPE html>
<html lang="en">

<head>

</head>

<body>

</body>

</html>

标签: javascripthtml

解决方案


您必须切换日期和月份,否则新日期将返回invalid date

例子:

const d = "28/7/2020";
const dateSplit = d.split("/")
new Date(`${dateSplit[1]}/${dateSplit[0]}/${dateSplit[2]}`)

将返回:Tue Jul 28 2020 00:00:00 GMT+0200 (Central European Summer Time)

您可以做的是用New date以下内容替换您的行:

const dateSplit = dates[i].split("/")
const newDate = new Date(`${dateSplit[1]}/${dateSplit[0]}/${dateSplit[2]}`)
d = new Date(newDate)

要么尝试将初始格式更改为new Date可以处理的东西。这将避免必须拆分和添加额外的代码

编辑:获取第一个日期和最后一个日期之间的天数。这是一个例子:

const minutes = 1000*60;
const hours = minutes*60;
const days = hours*24;

const date1 = new Date("7/28/2020").getTime();
const date2 = new Date("10/28/2020").getTime();
const dateDiff  = Math.round((date2 - date1)/days);
console.log(dateDiff);

编辑2:要获得长度差异,您可以这样做(使用您在评论中提到的日期):

const dateArr = [];
let date1 = ("23/9/2020").split("/");
let date2 = ("29/9/2020").split("/");


const diffDays = date2[0] - date1[0];  // date1[0] = 23, date2[0] = 29
for (i = 0; i <= diffDays; i++) {
    // content of the push would save each day between 23 and 29 as value... you can put whatever in here
    dateArr.push(`${date1[0] + i}/9/2020`); 
}
console.log(dateArr.length); // should equal 7

推荐阅读