firebase - 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()
}
解决方案
您在 Android 上看到的格式高度特定于设备配置运行的区域设置,这将根据语言和时区的不同而有很大差异。此默认字符串格式通常不应用于除调试目的之外的任何其他用途。
您使用 JavaScript 看到的格式旨在传输格式化为字符串的日期,以便在系统之间共享,而不是用于显示。
如果您想要 JavaScript 中的特定日期格式,我强烈建议您使用一些库或实用程序以可预测的方式按照您认为合适的方式格式化日期和时间。JavaScript 没有内置任何“好的”日期格式化功能。而是考虑使用类似momentjs的东西来准确指定您想要的字符串格式。
对于您的具体情况,如果您尝试将日期发送到 android 客户端应用程序,我也强烈建议您不要在后端对其进行格式化,而是使用 Android 平台内置的日期格式化实用程序(例如DateFormat)。默认的 Java 日期字符串格式几乎肯定不是您想要的。您将能够使用 Android 设备上提供的区域设置来格式化日期,这可能是用户可能喜欢的,基于他们的设置。
推荐阅读
- scala - 如何将火花数据集转换为 scala seq
- python - 代码在不同环境下运行不同
- javascript - JavaScript console.log 与数组中的 `map` 方法相同
- android - AR Core 更改为在 Play 商店中可见
- sql - SQL中时间序列飞行数据的重采样
- r - 将 kableExtra::cell_spec() 输出与自定义 S3 格式化方法相结合
- jenkins - jenkins 执行 shell 失败并出现错误:找不到通道 'ios 版本
- android - 从单独的外部类更新来自多个线程的多个视图
- java - 如何使用单个 maven 命令从代码库中 spring-boot:repacakge 到 Jar 和 War
- javascript - 如何选择具有自定义文件结尾的任何层的所有文件夹和子文件夹?