所以我有一个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)