Firestore Date在检索并保存回数据库后丢失时区偏移量

时间:2018-01-11 15:24:22

标签: javascript date nativescript google-cloud-firestore timezone-offset

我当地的时区是UTC + 2.

我正在构建一个具有RadCalendar控件的NativeScript应用程序,用户可以在其中选择日期。在我的场景中,用户选择2018年1月29日,30日和31日。

所选日期的console.dir()输出显示如下:

=== dump(): dumping members ===
JS: [
JS:     "2018-01-28T22:00:00.000Z",
JS:     "2018-01-29T22:00:00.000Z",
JS:     "2018-01-30T22:00:00.000Z"
JS: ]
JS: === dump(): dumping function and properties names ===

显然,RadCalendar正在将值转换为UTC,这很酷。然后我将这些日期保存到我的Firestore数据库,在那里它们存储在我当地时间,并保留时区信息,如我的FireStore控制台的屏幕截图所示: enter image description here

到目前为止一切顺利。 现在,当我将FireStore数据库中的记录读回我的应用程序(以及RadCalendar控件的.selectedDates属性)时,问题就出现了。

回读后,console.log()检索到的文档快照显示如下:

{
"theDate":"Jan 31, 2018 12:00:00 AM",
"available":false,
"memberUid":"N76BviTCX8fLdErAjMHYqx2GEU63",
"organizationUid":"zv5A7UC8B7bKzePGPyaJ"
}

请注意,时区信息已消失。我想在此时执行代码仍然是“本地时区感知”,并且日期(对于我的本地时区)不正确。但是在更改'available'属性并将记录保存回FireStore时会出现问题。

查看FireStore控制台中的日期值现在是什么样的: enter image description here

请注意,它不再是FireStore中的日期,而是一个字符串。

针对NativeScript的Chrome DevTools调试器实际上显示,在将数据检索回应用程序时,检索到的日期属性已经是字符串而不再是日期。可能值得一提的是,我正在使用this NativeScript-Firebase plugin与Firestore进行交互......可能是根插件库中存在根问题吗?

如何确保从FireStore数据库中返回的值在我的代码中保留为日期?

0 个答案:

没有答案