在javascript中将字符串转换为yyyy-dd-mm日期对象

问题描述

我正在从HTML获取fromdate和todate字段。 fromdate ='2020-07-30'。 我的数据库的字段ID为2020-07-30。现在,我想将两者进行比较。 所以我正在使用以下代码

 var dashboard2= await Incident.find({type:'somestring',username:region,idate:{'>=':new Date(fromdate),'<=':new Date(todate)}})

如果我的起始日期是“ 2020-07-30”。但其未检索到的记录为2020-07-30。如果我的起始日期仅是“ 2020-07-29”,那么将检索ID为2020-07-30的记录。

fromdate是字符串。 idate是一个日期对象。

我不知道我要去哪里。请纠正我吗?

根据建议,我更改了代码,如下所示:

function yyyyddmmFormatter(date) {
  var dateDiv = date.split('-');
  console.log(dateDiv);
  var date = new Date();
  date.setDate(dateDiv[2]);
  date.setMonth(dateDiv[1]-1);
  date.setFullYear(dateDiv[0]); // -- since it starts from 0

  return date;
}

我从日期字符串中输入的是“ 2020-07-16”。我得到的输出是2020-07-16T01:11:05.910Z。我想摆脱返回的o / p的时区。有可能吗?

解决方法

您还应该更新fromdate,因为传递fromdate一个固定日期不会将其更新为新日期。

,

与您可以使用moment模块的日期有关的任何格式。

编辑: 这会将字符串转换为日期对象。

function yyyyddmmFormatter(date) {
  var dateDiv = date.split('-');
  var date = new Date();
  date.setDate(dateDiv[0]);
  date.setMonth(dateDiv[1]--); // -- since it starts from 0
  date.setFullYear(dateDiv[2]);

  return date;
};

function yyyyddmmFormatterWithTime(date) {
  var dateDiv = date.split('-');
  var date = new Date();
  date.setHours(0,0); // to reset time
  date.setDate(dateDiv[0]);
  date.setMonth(dateDiv[1]--); // -- since it starts from 0
  date.setFullYear(dateDiv[2]); 

  return date;
};

var date = yyyyddmmFormatter("2020-07-30");
var dateWithTime = yyyyddmmFormatterWithTime("2020-07-30");
,

我只是在存储和检索时使用了它。这帮助我解决了我的问题。只是简单的解决方案: 检索时:

var fdate=new date(fromdate);

在存储日期时:

var date1= new Date(pdate);

这会将两个日期转换为相同的格式。