【问题标题】:Getting the right timestamp using Firebase Cloud Functions使用 Firebase Cloud Functions 获取正确的时间戳
【发布时间】:2018-03-08 05:38:10
【问题描述】:

我正在尝试找出解决问题的最佳方法。我有一个 firebase 云功能,可以监听在 firebase 数据库路径上所做的更改。一旦数据库路径发生变化,云功能就会被触发并向用户发送通知。

在此云功能中,我将通知的详细信息存储在数据库中(另一条路径),以便用户可以返回并在我的应用程序中查看他们过去的通知。

我面临的问题是存储正确的日期和时间。目前,我正在使用新的 Date() 函数在云函数中捕获此信息,但这显然是错误的,因为它正在返回服务器时间。我需要捕获客户端时间(接收通知的人)并将该值存储在数据库中。

问题是,客户可以在任何国家,所以我需要考虑不同的时区。我该怎么做呢?我觉得必须有一个简单的方法来解决这个问题,但我只是没有看到它。

===

对于遇到此帖子寻找解决方案的任何人,我在此帖子中找到了解决方案:

Convert UTC date time to local date time

它在 Firebase Cloud Function 代码上运行良好 :-)

【问题讨论】:

  • 用时区存储服务器的时间戳,它将帮助您将该时间转换为本地时区。
  • @LaxmikantDange 感谢您的帮助。你能给我一个例子来说明如何做到这一点吗?

标签: javascript firebase ionic2 firebase-cloud-messaging google-cloud-functions


【解决方案1】:

您可以使用时区偏移或 GMT 时区保存来自服务器的日期。由于您有时区偏移,您可以轻松地将其转换为任何时区。

例如。

var d = new Date('2000-01-01');
// You can save date in GMT timezone like this.
// It will be like 1999-12-31T18:30:00.000Z.
// Currently I am with +5:30 timezone.
console.log(d.toJSON());

// Convert date string back to date object at client side.
var d2 = new Date('1999-12-31T18:30:00.000Z');
console.log(d2.toString());

【讨论】:

  • 感谢您的帮助,但它似乎没有像我预期的那样工作。让我描绘一下场景——在服务器端,我保存日期。在客户端,如果我转换美国的日期,它应该显示为下午 3:22(例如)。但是,如果我将计算机上的时区更改为挪威并转换日期,它现在应该显示为晚上 9:23。我如何做到这一点?
猜你喜欢
  • 1970-01-01
  • 2021-02-24
  • 1970-01-01
  • 2020-10-22
  • 2017-09-19
  • 2018-03-20
  • 2017-12-24
  • 2021-07-25
  • 1970-01-01
相关资源
最近更新 更多