【问题标题】:convert string to yyyy-dd-mm date object in javascript在javascript中将字符串转换为yyyy-dd-mm日期对象
【发布时间】:2020-08-29 13:49:47
【问题描述】:

我从 HTML 中获取 fromdate 和 todate 字段。 从日期='2020-07-30'。 我的数据库有一个字段 idate 为 2020-07-30。现在我想比较他们两个。 所以我使用以下代码:

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

如果我的起始日期是“2020-07-30”。但它没有使用 idate: 2020-07-30 检索记录。如果我的 fromdate 是 '2020-07-29' ,那么只有 idate: 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;
}

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

【问题讨论】:

  • 您使用的是哪个数据库?
  • 我在考虑时区
  • 我正在通过风帆使用 mongo dB

标签: javascript node.js momentjs sails.js


【解决方案1】:

您也应该更新您的起始日期,因为将起始日期传递给修复日期不会将其更新为新日期。

【讨论】:

  • 这是什么意思?
  • 我没听懂你在说什么。Fromdate 是用户输入。
  • 如果您将固定的起始日期传递给 idate,它将不允许 idate 更新到新日期,fromdate 应该是正确且更新的信息,我的意思是检查 fromdate 的代码...仍然困惑然后请给我您的起始日期代码。
  • 我的 fromdate 字段是 var fromdate=req.body.fromdate.. 我是从 html 中获取的。它是一个日期字段用户输入
  • 您是否使用正文解析器从文件中获取数据?如果这是纯 html 尝试使用 ejs,我更喜欢 ejs 文件而不是纯 html 文件确保 bodyparser 的代码扩展为 true。
【解决方案2】:

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

var fdate=new date(fromdate);

在存储日期时:

var date1= new Date(pdate);

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

【讨论】:

    【解决方案3】:

    任何与日期相关的格式都可以使用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, 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");
    

    【讨论】:

    • 这并不能解决问题。根据他们已经使用的标签,时刻。
    • 我也用了 moment .. 但没用。我的 fromdate 字符串需要一个日期对象。
    • 嗨..我试过这个...function yyyyddmmFormatter(date) { var dateDiv = date.split('-');控制台.log(dateDiv); var date = new Date(); date.setDate(dateDiv[2]); date.setMonth(dateDiv[1]-1); date.setFullYear(dateDiv[0]); // -- 因为它从 0 返回日期开始; };我的输入是“2020-07-16”,我的返回日期是 2020-07-16T01:11:05.910Z.. 我怎样才能摆脱时区? :(
    • 您可以使用日期属性,例如 date.toLocaleString();
    猜你喜欢
    • 1970-01-01
    • 2018-05-19
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    相关资源
    最近更新 更多