我有一个日程安排应用程序,其中有一个我从头开始构建的日历。作为律师,您应该能够配置您的可用预订时间,如下所示:
澳大利亚律师的可用性:
1- 10/01/2020,从 07:00am 到 08:am ...
这就是我所做的:
1- 获取epoch
Javascript 中输入日期的编号:
const dateFrom = new Date(firstOfJanSevenAm).getTime() // 1578600000000
// Fri Jan 10 2020 07:00:00 GMT+1100 (Australian Eastern Daylight Time)
const dateTo = new Date(firstOfJanEightAm).getTime() // 1578603600000
// Fri Jan 10 2020 08:00:00 GMT+1100 (Australian Eastern Daylight Time)
2-将其发送到NodeJS
服务器并保存MongoDB
Mongoose.save({
from:dateFrom, //1578600000000
from:dateTo //1578603600000
})
3-在日历中表示它:
<div>{format(from, 'HH:mm')}</div>
一切都按预期工作。
现在,这位律师正在美国旅行,他在使用美国当地时间(任何城市)的咖啡店,他打开日历,他想添加一些可用性,但在悉尼时间。我需要为他提供时区下拉列表,以便他可以告诉我他希望新日期基于他的家Syndey。
问题 :
1-我是否像我一样保存日期(作为数字),并将时区单独保存在它旁边,并且在表示它时,只需应用时区?
Mongoose.save({
from:dateFrom, //1578600000000
from:dateFrom //1578603600000
currentTimeZone : 'America/Costa_Rica',
desiredTimeZone: 'Australia/Sydney'
})
<div>{formatWithTimeZone(from, 'HH:mm',desiredTimeZone)}</div>
这就是我所要做的吗?或者我是否天真地错过了一些会让我绊倒的东西?
回到我最初的问题,我在哪里做整个“始终将时间存储为 UTC”的事情?
我所意识到的是,当我使用我正在使用的库date-fns-tz
并尝试将用户输入的日期转换为时UTC
,我得到完全相同的输出:
const dateFrom = new Date(firstOfJanSevenAm).getTime() // 1578600000000
const dateFromUTC = zonedTimeToUtc(dateFrom,currentTimeZone) // 1578600000000
// currentTimeZone is America/Costa_Rica, when he is in Costa Rica's caffee shop.
enter code here
1578600000000 === 1578600000000 = true
那么为什么在将输入的日期转换为日期时会得到相同的输出UTC
?