GET方法中日期参数的“无效日期”错误

时间:2018-11-28 16:28:12

标签: javascript node.js

我正在将日期字符串作为GET方法中的查询参数传递。使用new Date(date)方法对字符串进行硬编码和转换后,可以正常工作。但是,如果我尝试对查询参数执行相同操作,则会引发“无效日期”错误。 日期字符串的格式为ISO8601。我的查询端点是:

http://localhost:3000/api/v1/range?startDate=%222018-10-11T12%3A55%3A37.000Z%22

日期字符串为"2018-10-11T12:55:37.000Z"

节点代码段:

exports.searchItems = async (req, res) => {

  try {
    let startDate = req.swagger.params.startDate.value;
    validCheck = new Date(startDate)
    webUtils.sendResponse(res, 200, validCheck);
  } catch (err) {
    webUtils.errorHandler(res, err);
  }
};

1 个答案:

答案 0 :(得分:2)

在我的问题注释之后,我使用代码段require('url').parse('/range?startDate=%222018-10-11T12%3A55%3A37.000Z%22', true)在节点8中进行了再次检查,并且使用双引号作为字符串的一部分来解析查询。即结果对象的查询部分是:

{..., query: { startDate: '"2018-10-11T12:55:37.000Z"' }, ... }

需要删除引号以创建有效的日期字符串以在Date构造函数中使用。