javascript - 使用 moment.js 查找与今天日期匹配的对象的索引
问题描述
我正在尝试在包含与当前日期匹配的时间戳的数组中查找对象的索引。今天是 27 号,所以根据我的数据集,它应该返回第一个索引。我尝试了两种解决方案,但由于不同的原因,这两种解决方案都不起作用。我愿意使用任何一种方法的解决方案。
我尝试过使用精确的字符串匹配。
const index = _.findIndex(data, function(day) {
return day.timestampUtc === moment().startOf('day').toISOString() })
上面的方法不起作用,因为它试图匹配2021-01-27T00:00:00Z
从未2021-01-27T06:00:00.000Z
捕获的对象,因为它会返回未定义。
我也试过
const index = _.findIndex(data, function(day) {
return moment(day.timestampUtc).day() === moment().day() }) //should return 1, but returns 2
这个不起作用,因为moment(day.timestampUtc)
由于时区偏移, using 会在前一天评估它,所以我返回的索引会太高,因为它会提前一天进行评估。
数据
[{
timestampUtc: "2021-01-26T00:00:00Z"
weatherCodeType: "FLURRIES"
},
{
timestampUtc: "2021-01-27T00:00:00Z"
weatherCodeType: "RAIN"
}, //I want this one
{
timestampUtc: "2021-01-28T00:00:00Z"
weatherCodeType: "SNOW"
},
]
解决方案
您应该将时间设置为 0,我认为最好比较值,而不是字符串:
index = _.findIndex(data, (day) => {
var today = moment().utc()
today.set({ hour: 0, minute: 0, second: 0, millisecond: 0 })
return moment.utc(day.timestampUtc).valueOf() === today.valueOf()
})
推荐阅读
- python-3.x - 熊猫列名搜索并将注释列值附加到前一行值python
- javascript - 从外部脚本登录后调用 VueJS 组件
- javascript - 冒号运算符“:”作为“=”发送
- asp.net - 如何手动将 .nupkg Nuget 包添加到 VS Code?
- python - Python禁用键盘输入
- python - 如何使用令牌将 python 包发布到诗歌中的内部工件
- python - 如何在python中提取一些坐标点的外点
- python - 如何使用 Python 删除 csv 文件中的标点符号和停用词实例?
- sql - Power BI 导入和直接查询
- python-3.x - 使用 locust.io 添加对象以形成数据