javascript - 有没有一种方法可以用Javascript解析和比较weather.gov日期格式?

标签 javascript momentjs

我正在开发的应用程序依赖于来自weather.gov API 的预报数据。对于每个位置,都有一个不同的端点。数据模式非常标准,如下所示:

https://api.weather.gov/gridpoints/EAX/41,43

所有属性(温度、风速、风向等)都有一个值列表,每个值都针对给定的时间段。句点的格式如下:

2018-04-27T04:00:00+00:00/PT1H

我猜这意味着从 2018 年 4 月 4 日 4:00 (UTC) 开始的 1 小时。

如果我想获取当前温度,我会这样:

const now = new Date();
let currentTemperature;
data.properties.temperature.values.forEach((value) => {
    if (now in value.validTime) {
        currentTemperature = value;
    }
});

value.validTime 中的 now 只是一个伪条件。我知道这不会按预期的方式工作。我只是想要一种方法来检查 now 是否在该区间内。

我在 another question 上找到那:

moment does parse ISO-formatted durations out of the box with the moment.duration method.

我想我可以将 API 给出的日期分成两部分,这样:

const [ start, duration ] = value.validTime.split('/');

然后使用 moment 函数解析持续时间。然而,经过一番研究,我找不到如何直接使用duration对象来执行我需要的检查。

实际上,我找到了一种方法:

const now = moment();
const [ start, duration ] = value.validTime.split('/');
const diff = moment(start).diff(now);
if (moment.duration(duration).asMilliseconds() > diff) {
    // The current time (now) is in this interval.
}

但这对于看起来有更简单的解决方案来说似乎太多了。

最后,我不一定要寻找基于 moment 的解决方案。我可以使用不同的库,甚至是普通的 JS。

最佳答案

您可以简单地使用 isBetween :

Check if a moment is between two other moments, optionally looking at unit scale (minutes, hours, days, etc). The match is exclusive. The first two arguments will be parsed as moments, if not already so.

add(Duration) .

您的代码可能如下所示:

const now = moment();
const [ start, duration ] = value.validTime.split('/');
const dur = moment.duration(duration);
const end = moment(start).add(dur);
if ( now.isBetween(start, end) ) {
    // The current time (now) is in this interval.
}

关于javascript - 有没有一种方法可以用Javascript解析和比较weather.gov日期格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50063141/

相关文章:

javascript - Django:无法从 Javascript 调用 python 函数

javascript - 在点击事件之前执行 stringByEvaluatingJavaScriptFromString

javascript - AJAX动态内容 "event delegation"替换为 "each"

timezone - MomentJS 时区返回错误的日期和时间

javascript - 原型(prototype)方法可以访问构造函数的上下文(闭包)

javascript - 在 Javascript 中将事件监听器添加到 'memory objects'?

Javascript: moment().startOf ('quarter' ) 被窃听?

javascript - 使用 moment 检查时间是否重叠?

javascript - 如何获取适用于浏览器的 Twig.js

javascript - 将 unix 时间戳转换为 moment js 在 chrome 中无法正常工作