繁体   English   中英

使用不同格式比较 MongoDB Object 数组中的日期

[英]Compare Dates in Array of MongoDB Object with different formats

我在前端使用日期选择器,它使用 AJAX 请求发送日期。 现在这个日期的格式是 - 'YYYY-MM-DD'。 我有一个日期数组,我必须将其与此日期进行比较并挑选出相等的日期。 这个数组来自一个 Mongo DB 集合,我在该字段中也包含了 TimeZone,例如 - “2020-06-03T00:00:00.000Z”

我的插槽 Json Object

{
  date: [
    2020-06-03T00:00:00.000Z,
    2020-06-05T00:00:00.000Z,
    2020-06-07T00:00:00.000Z
  ],
  __v: 0
}

我必须遍历日期数组中的每个日期,并将其与从前端获得的日期进行比较。

假设用户输入日期是

let userInput = '2020-06-03';

现在我必须将它与日期数组进行比较如何确保以下比较使我获得真正的价值

'2020-06-03' and '2020-06-03T00:00:00.000Z'

我正在寻找一个适合循环遍历所有这些数组元素的解决方案。

假设您的日期数组总是在 00:00:00 点,我建议这样:

 const dates = [ '2020-06-03T00:00:00.000Z', '2020-06-05T00:00:00.000Z', '2020-06-07T00:00:00.000Z' ]; let userInput = '2020-06-03'; function findDates(date) { const searchDate = Date.parse(date); const foundDates = []; dates.forEach(date => { const tempDate = Date.parse(date); if (tempDate === searchDate) { foundDates.push(date); } }); return foundDates; } console.log(findDates(userInput));

如果还有更多需要考虑,请说出来

正确指定日期字符串(输入)的格式和日期数组以进行解析。 然后您可以立即使用isSame()检查日期是否相等

 let input = "2020-06-03"; let arr = [ "2020-06-03T00:00:00.000Z", "2020-06-05T00:00:00.000Z", "2020-06-07T00:00:00.000Z" ]; let result = arr.map(item => moment(item, "YYYY-MM-DD hh:mm:ss zz").isSame(input, "YYYY-MM-DD") ); console.log(result);
 <script src="https://momentjs.com/downloads/moment.js"></script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM