【问题标题】:Get the difference between to dates in minutes with Date-FNS - NaN Error使用 Date-FNS - NaN 错误以分钟为单位获取日期之间的差异
【发布时间】:2018-09-09 21:01:05
【问题描述】:

我正在使用Date-FNS 库以分钟为单位获取日期之间的差异。为什么 minutesDifference 返回 NaN? 我的目标是获取给定日期之间的分钟数。 Here is the link to the Date-FNS doc.

 getDateTime: function () {
            var now = new Date()
            var year = now.getFullYear()
            var month = now.getMonth()
            var day = now.getDate()
            var hour = now.getHours()
            var minute = now.getMinutes()

            var dateTime = year + ', ' + month + ', ' + day + ', ' + hour + ', ' + minute + ', 0'

            var minutesDifference = differenceInMinutes(new Date(2018, 2, 30, 22, 55, 0), new Date(dateTime))
            return minutesDifference
          },

【问题讨论】:

  • 你在函数differenceInMinutes()中做什么?请将代码添加到您的问题中。
  • 获取给定日期之间的分钟数。 date-fns.org/v1.29.0/docs/differenceInMinutes
  • 您是否尝试过相反的方法? differenceInMinutes(new Date(dateTime), new Date(2018, 2, 30, 22, 55, 0))

标签: javascript date-fns


【解决方案1】:

dateTime 的值是一个不正确的字符串,您将 1 个单个参数而不是 6 个不同的参数传递给 Date()

做吧

differenceInMinutes(new Date(2018, 2, 30, 22, 55, 0), new Date())

new Date 默认采用当前日期/时间戳,因此您无需向其传递任何参数。

请参考文档:Date - JavaScript | MDN

【讨论】:

  • 谢谢,但是如何将生成的 日期传递给函数?这不起作用,得到 NaNgetDateTime: function () { var now = new Date() var year = now.getFullYear() var month = now.getMonth() var day = now.getDate() var hour = now.getHours() var minute = now.getMinutes() var dateTime = year + ', ' + month + ', ' + day + ', ' + hour + ', ' + minute + ', 0' var minutesDifference = differenceInMinutes(new Date(), new Date(dateTime)) return minutesDifference },
  • @Tom 与您的问题中的代码相同吗?如果您想将参数作为 1 个单个字符串传递,请确保该字符串的格式正确,因此它类似于 Date('December 17, 1995 03:24:00')。您的字符串当前具有逗号分隔值。查看我的答案中的文档链接。
  • Rahul,我尝试了您的建议和其他几个变体,但均未成功。这是一个简单的示例代码:// import Date-FNS for minutesDifference, https://date-fns.org/v1.29.0/docs/differenceInMinutes getDateTime('2018, 3, 4, 15, 30, 0') getDateTime: function (dateReminder) { var minutesDifference = differenceInMinutes(new Date(dateReminder), new Date()) console.log('minutesDifference: ' + minutesDifference) } GOAL: 将日期传递给函数以获取以分钟为单位的差异。
  • [..2] 通过硬编码日期,它可以工作:var minutesDifference = differenceInMinutes(new Date(2018, 3, 4, 15, 30, 0), new Date()) 任何想法我需要更改以将日期传递给函数?跨度>
  • @Tom 你似乎又犯了同样的错误。 不要将逗号分隔的值传递给Date(),如'2018, 3, 4, 15, 30, 0'。从问题中的代码中,尝试执行differenceInMinutes(new Date(2018, 2, 30, 22, 55, 0), new Date(year, month, day, hour, minute, 0))。请注意,在第二个日期对象中,传递了 6 个不同的参数。希望能帮助到你。 :)
猜你喜欢
  • 2012-01-03
  • 2016-02-09
  • 2021-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-14
  • 1970-01-01
相关资源
最近更新 更多