我如何在javascript中获得未来日期的剩余秒数



所以我有一个API,它给了我像这样的日期格式11/21/2022 19:00:00我需要做的是我必须为这个日期时间安排通知,但问题是我使用的是react-native/expo,它接受以秒为单位的调度时间。

我如何将此日期时间转换为秒,我的意思是,如果今天的日期是11/15/2022 12:00:00,通知应安排的日期是11/16/2022 12:00:00,这意味着在今天日期之前1天的未来日期,1天等于86400秒,这意味着我必须在86400秒后触发通知。那么我如何得到即将到来的约会的剩余时间呢?

Use .getTime()

  • 函数Date.prototype.getTime()返回从纪元(1970年1月1日)开始的毫秒数
  • 获取毫秒数并将其除以1000到秒
  • 减去(整数),就得到差值

根据Date.parse()只支持ISO 8601格式的ECMA262字符串,所以使用:

  • new Date("2022-11-16T12:00:00Z")
  • new Date(2022,10,16,12)
  • 而不是n̶e̶w̶ ̶D̶a̶t̶e̶(̶"̶1̶1̶/̶2̶1̶/̶2̶0̶2̶2̶ ̶1̶9̶:̶0̶0̶:̶0̶0̶"̶)̶,可能导致意外行为

const secondsInTheFuture = new Date("2022-11-16T12:00:00Z").getTime() / 1000;
const secondsNow = new Date().getTime() / 1000;
const difference = Math.round(secondsInTheFuture - secondsNow);
console.log({ secondsInTheFuture, secondsNow, difference });

你可以用函数+ new Date在js中获得纪元时间,如果你要传递任何日期值,new date (dateValue),请确保字符串化

+ new Date

要以秒为单位获得这两个日期的差值,

const initialDate = '11/15/2022 12:00:00'
const futureDate = '11/16/2022 12:00:00'
const diffInSeconds = (+ new Date(futureDate) - + new Date(initialDate)) / 1000

ps: epoch时间以毫秒为单位,因此除以1000。

使用dayjs包解决

const dayjs = require("dayjs")
const d1 = dayjs("2022-11-15 13:00")
const d2 = dayjs("2022-11-16 12:00")
const res = d1.diff(d2) / 1000 // ÷ by 1000 to get output in seconds
console.log(res)

相关内容

  • 没有找到相关文章

最新更新