Javascript 如何在Firebase firestore db中保存具有正确时区的未来过期日期

Javascript 如何在Firebase firestore db中保存具有正确时区的未来过期日期,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,我正在尝试将一个名为“expiration”的属性保存到Firebase文档中。这将是一个在将来设置的日期,我将在前端检查,看看date.now是否晚于到期日期,如果是,我将在UI中呈现一个图形来描述它是一个“到期”文档 我试图将其保存为字符串,但无法利用firebase的日期查询功能。我如何将此日期设置为将来的东部时区 let splitDate = game.gameDate.split("-").map(Number); let splitTime = game.gameTimeET.sp

我正在尝试将一个名为“expiration”的属性保存到Firebase文档中。这将是一个在将来设置的日期,我将在前端检查,看看date.now是否晚于到期日期,如果是,我将在UI中呈现一个图形来描述它是一个“到期”文档

我试图将其保存为字符串,但无法利用firebase的日期查询功能。我如何将此日期设置为将来的东部时区

let splitDate = game.gameDate.split("-").map(Number);
let splitTime = game.gameTimeET.split(" ");
let hours = splitTime[0].split(":").map(Number);
let meridian = splitTime[1];
if (meridian === "PM") {
  hours[0] = hours[0]+16
} 
let dateString = new Date(splitDate[0], splitDate[1]-1, splitDate[2], hours[0], hours[1]).toLocaleString("en-US", {timeZone: "America/New_York"});

pollDoc.update({
 expires: dateString
});

正在将日期另存为字符串。如果我在运行ToLocalString之前只保存date对象,它会使用不正确的时区保存日期。如何将其保存到Firebase数据库中的EST时区?

与unix历元时间整数一样,Cloud Firestore不使用时间戳对象保存时区信息。它们始终存储在UTC中。如果您在控制台中看到一个时区,那么这只是呈现给本地机器配置的时区的时间戳

时区代表地球上所有人的一个时间点。如果您需要解释该时间戳以便为UI呈现日期或时间,则需要自行格式化该时间戳。如果您需要手动处理某人输入时间戳,则需要将其时区概念转换为UTC以正确存储


如果您使用JavaScript,您可能会发现该库很有用。

嘿,Doug,如果我有一个日期和未来最短时间需要以UTC的形式存储在Firebase中,我如何准备将其存储在Firebase中?例如,假设我们有日期2019-09-05美国东部时间晚上8:20。如何将其保存在Firebase中作为UTC?正如我所提到的,使用矩及其配套库矩时区。有没有办法用原始Javascript而不是矩来实现这一点?当然,自己做所有时区的计算。如果你被这个问题困住了,就发一个新问题。我要死了:))