首页 > 解决方案 > android vs firebase函数中的Firestore时间戳格式

问题描述

在我的平台中,firestore 时间戳位于

时间:2020 年 4 月 7 日下午 12:07:16 UTC+5:30

它是由 android 客户端使用以下代码创建的:

createdAt = new Timestamp(new Date());

尝试从 Firebase 云函数内部创建上述日期格式,但它以以下格式返回日期

t:“2020-04-07T20:35:08.717Z”

使用代码

t: new Date().toISOString()

也试过

Firestore.Timestamp.now();

有人可以协助如何获取与android中格式相同的日期吗

确切的代码是云函数中的对象填充,并以上述不兼容的格式返回时间

let messagePayload = {
          msg:"A test message",
          mt:"text",
          pm:"",
          pmdi:"",
          sb:"1908392XXXX",
          sdi:"Ichthyocentaurs",
          t: new Date().toISOString() 
        }

标签: firebasegoogle-cloud-firestoregoogle-cloud-functions

解决方案


您在 Android 上看到的格式高度特定于设备配置运行的区域设置,这将根据语言和时区的不同而有很大差异。此默认字符串格式通常不应用于除调试目的之外的任何其他用途。

您使用 JavaScript 看到的格式旨在传输格式化为字符串的日期,以便在系统之间共享,而不是用于显示。

如果您想要 JavaScript 中的特定日期格式,我强烈建议您使用一些库或实用程序以可预测的方式按照您认为合适的方式格式化日期和时间。JavaScript 没有内置任何“好的”日期格式化功能。而是考虑使用类似momentjs的东西来准确指定您想要的字符串格式。

对于您的具体情况,如果您尝试将日期发送到 android 客户端应用程序,我也强烈建议您不要在后端对其进行格式化,而是使用 Android 平台内置的日期格式化实用程序(例如DateFormat)。默认的 Java 日期字符串格式几乎肯定不是您想要的。您将能够使用 Android 设备上提供的区域设置来格式化日期,这可能是用户可能喜欢的,基于他们的设置。


推荐阅读