Javascript 如何标记从输入日期开始的时间间隔

Javascript 如何标记从输入日期开始的时间间隔,javascript,date,Javascript,Date,我有一个文件输入,在加载.csv日志历史记录后,我想比较输入和每行的日期。当我使用dateFromInput变量(“2022年1月1日20:00:00 UTC”)中的静态日期,但在从输入中传递日期之后,这种方法不起作用。如何更改代码使其工作?有什么建议吗 //示例log.csv文件: /* 2011-1-21 8:40:45,佐治亚州zzz 2012-2-22 9:10:21,aaa,xxx 2014-3-22 10:10:22,aaa,zzz 2017-5-22 17:10:23,美国汽车协

我有一个文件输入,在加载.csv日志历史记录后,我想比较输入和每行的日期。当我使用dateFromInput变量(“2022年1月1日20:00:00 UTC”)中的静态日期,但在从输入中传递日期之后,这种方法不起作用。如何更改代码使其工作?有什么建议吗

//示例log.csv文件:
/*
2011-1-21 8:40:45,佐治亚州zzz
2012-2-22 9:10:21,aaa,xxx
2014-3-22 10:10:22,aaa,zzz
2017-5-22 17:10:23,美国汽车协会,ccc
*/
const compareDate=(a,b)=>{
//a=第一次输入(每列),b=第二次输入(用户输入)
if(ab){
警报(“更新日期”);
返回1;
}//gt
else返回null;//错误
}
const makeTableFromCSV=csv=>{
让rows=csv.split(“\r\n”),table=document.createElement(“table”),tr,td,tdList;
for(设i=1;iinput.value=“”;
const formatDate=(数据,日期)=>date=新日期(数据);
const convertDateToMiliseconds=date=>date.getTime();
const addClassToRow=(行,类名)=>row.classList.add(类名);
const getDateFromColumn=集合=>{
让dateColumns=document.getElementsByCassName(集合);
const columns=Array.from(dateColumns);
返回列;
}
const onFileSelected=ev=>{
const selectedFile=ev.target.files[0];
const reader=new FileReader();
reader.onload=ev=>{
makeTableFromCSV(ev.target.result);
如果(电动汽车目标){
const columns=getDateFromColumn(“日志表单元格”);
columns.forEach(column=>{
让dateFromRow=formatDate(column.innerHTML);
让MilisondsFromRow=convertDateToMiliseconds(dateFromRow);
//常量inputValue=dateYear.value+“”+dateHour.value;
//const dateFromInput=新日期(“2022年1月1日20:00:00 UTC”);
//添加代码
var dateInput=document.getElementById(“date1”);
var timeInput=document.getElementById(“date2”);
var dateTime=dateInput.value+“”+timeInput.value;
var dateFromInput=新日期(dateTime);
//添加了代码结尾
const inputDateToMs=dateFromInput.getTime();
const compared=compareDate(从行到输入日期的毫秒数);
如果(比较==-1){
addClassToRow(列,“突出显示”);
}
log(已比较、MilisondsFromRow、inputDateToMs);
});
}
};
reader.readAsText(所选文件);
}
。突出显示{
背景:灰色;
}


比较
我希望这有帮助

HTML

<input type="date" id="date">
<input type="time" id="time">
<button id="check">Compare</button>
您的代码

const onFileSelected = ev => {
  const selectedFile = ev.target.files[0];
  const reader = new FileReader();
  reader.onload = ev => {
    makeTableFromCSV(ev.target.result);
    if (ev.target) {
      const columns = getDateFromColumn("log-table__cell");
      columns.forEach(column => {
        let dateFromRow = formatDate(column.innerHTML);
        let milisecondsFromRow = convertDateToMiliseconds(dateFromRow);
        //const inputValue = dateYear.value + " " + dateHour.value;        
        //const dateFromInput = new Date("1 January 2022 20:00:00 UTC");

        // ADDED CODE
        var dateInput = document.getElementById("date1");
        var timeInput = document.getElementById("date2");
        var dateTime = dateInput.value + " " + timeInput.value;
        var dateFromInput = new Date(dateTime);
        // ADDED CODE ENDS

        const inputDateToMs = dateFromInput.getTime();
        const compared = compareDate(milisecondsFromRow, inputDateToMs);
        if (compared === -1) {
          addClassToRow(column, "highlighted");
        }
        console.log(compared, milisecondsFromRow, inputDateToMs);
      });
    }
  };
  reader.readAsText(selectedFile);
}

我不知道这是怎么回事。你能把你的代码和我的代码结合起来,然后发布一个到JSFIDLE的链接吗?谢谢,我已经添加了你的代码,但它不起作用。我认为它应该从点击输入中获取日期。看看上面的代码,你知道吗?@miqezjo我添加的代码从输入中获取日期和时间,并将其转换为日期对象。我不知道为什么它在您的代码中不起作用。@miqezjo如果它确实解决了您的问题,请将其标记为答案。
var dateInput = document.getElementById("date");
var timeInput = document.getElementById("time");
var dateTime = dateInput.value + " " + timeInput.value;
var date1 = new Date("2011-1-21 8:40:45") // date from csv row
var date2 = new Date(dateTime);

// the rest of the codes...
const onFileSelected = ev => {
  const selectedFile = ev.target.files[0];
  const reader = new FileReader();
  reader.onload = ev => {
    makeTableFromCSV(ev.target.result);
    if (ev.target) {
      const columns = getDateFromColumn("log-table__cell");
      columns.forEach(column => {
        let dateFromRow = formatDate(column.innerHTML);
        let milisecondsFromRow = convertDateToMiliseconds(dateFromRow);
        //const inputValue = dateYear.value + " " + dateHour.value;        
        //const dateFromInput = new Date("1 January 2022 20:00:00 UTC");

        // ADDED CODE
        var dateInput = document.getElementById("date1");
        var timeInput = document.getElementById("date2");
        var dateTime = dateInput.value + " " + timeInput.value;
        var dateFromInput = new Date(dateTime);
        // ADDED CODE ENDS

        const inputDateToMs = dateFromInput.getTime();
        const compared = compareDate(milisecondsFromRow, inputDateToMs);
        if (compared === -1) {
          addClassToRow(column, "highlighted");
        }
        console.log(compared, milisecondsFromRow, inputDateToMs);
      });
    }
  };
  reader.readAsText(selectedFile);
}