【问题标题】:get items greater than given datetime and less than given datetime in an array [duplicate]在数组中获取大于给定日期时间且小于给定日期时间的项目[重复]
【发布时间】:2021-01-13 19:37:14
【问题描述】:

我有一个包含 startTime 的数组。我想获取 startTime 在 2020-12-10 09:30:00 和 2020-12-10 13:20:00 之间的项目。我正在使用过滤器方法从数组中获取项目。

startTime>'2020-12-10 09:30:00' // 正在工作,返回包含 6 个项目的数组

但是当我添加 startTime>'2020-12-10 09:30:00' && startTime

无法理解为什么我使用小于时它不过滤结果

这是我的代码

var empStart = empShift.filter(item => {
    return item.startTime>'2020-12-10 09:30:00' && item.startTime<'2020-12-10 
    13:20:00'
    })

【问题讨论】:

  • 您在此处显示的是字符串,而不是 Date 对象。如果startTime 的值是Date 对象,那就有问题了。
  • 刚刚过去你正在使用的虚拟数据empShift

标签: javascript arrays reactjs datetime date-comparison


【解决方案1】:

感谢大家的回复,我才知道我的错误是什么

var empStart = empShift.filter(item => {

return new date(item.startTime).getTime() >'2020-12-10 09:30:00' && new 
date(item.startTime).getTime() <'2020-12-10 13:20:00'

})

new date(//variable).getTime() // 解决了我的问题

【讨论】:

  • 这并不能解决问题。 getTime() 返回自纪元以来的毫秒数,并与字符串进行比较。
  • 我将日期存储在一个变量中,比如 new date(item.startTime).getTime() >new date(neededDate).getTime()
  • 我看了你的回答;重复它不会改变问题。所以如果你运行new Date().getTime(),它应该返回一个类似1610570971995的值。您是否看到将其与字符串 '2020-12-10 09:30:00' 进行比较没有多大意义?另一个例子:尝试运行new Date().getTime() &lt; '2321-02-01 13:20:00' 当然这应该是真的?今天明显小于2321年2月1日!但它返回错误。但是,如果您运行 new Date().getTime() &lt; new Date('2321-02-01T13:20:00').getTime(),它会返回 true,因为您正在比较两个相同类型的值。
  • new Date('2020-12-10 09:30:00') 在至少一个当前浏览器中创建无效日期,请参阅Why does Date.parse give incorrect results?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多