【问题标题】:Check if any date/time in array is greater then current local time using Luxon moment js使用 Luxon moment js 检查数组中的任何日期/时间是否大于当前本地时间
【发布时间】:2021-06-17 09:07:02
【问题描述】:

我目前正在根据一些 json 数据返回 2 组时间。我希望能够比较当前本地时间并检查它是否大于或小于我的 json 方案中的任何日期。

const result = [
  {
    "carId": "13122656-169f-45fa-be47-26c9d23dcb7b",
    "carInstances": [
      {
        "carInstanceId": "47209558-f9e1-4f81-a600-5da6ce238a6e",
        "carTime": "2020-09-23T21:45:00.000+0000",
        "state": "COMPLETE",
      }
    ],
    "isPaused": false,
  },
  {
    "carId": "13122656-169f-45fa-be47-26c9d23dcb7b",
    "carInstances": [
      {
        "carInstanceId": "47209558-f9e1-4f81-a600-5da6ce238a6e",
        "carTime": "2020-09-23T21:45:00.000+0000",
        "state": "COMPLETE",
      }
    ],
    "isPaused": false,
  },
];

const timeAgo = (date) => {
    const now = DateTime.local();
    const past = DateTime.fromISO(date);
    const diff = past.diff(now, 'minutes');
    return Math.floor(diff.minutes);
}

const listCarTime = (res) => {
  return res.reduce((acc, car) => {
    acc.push(...car.carInstances.map((instance) => instance.carTime));
    return acc;  
  }, []);
}

console.log('result', timeAgo(results)); <----Returns NAN

【问题讨论】:

    标签: javascript momentjs lodash luxon


    【解决方案1】:

    您正在将 result (一个数组)传递给 timeAgo(date) 函数,该函数期望 iso 格式的日期,然后(作为日期参数)尝试解析它什么不起作用。当您传递正确的参数时,您的函数可以正常工作。您可以尝试使用正确的 iso 日期。

    timeAgo("2020-09-23T21:45:00.000+0000") // return 255017.36843333332
    
    const diffrences = result.map( res => res.carInstances.map( ins => timeAgo(ins.carTime) )).flat()
    
    console.log("result", diffrences )
    

    【讨论】:

    • 我需要所有的值,而不仅仅是一个,也不需要对日期进行硬编码
    • 你可以遍历你的数组。
    猜你喜欢
    • 2013-06-25
    • 2021-04-22
    • 2015-07-29
    • 1970-01-01
    • 2016-10-14
    • 2011-02-19
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    相关资源
    最近更新 更多