我当地的时区是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控制台的屏幕截图所示:
到目前为止一切顺利。
现在,当我将FireStore数据库中的记录读回我的应用程序(以及RadCalendar控件的.selectedDates
属性)时,问题就出现了。
回读后,console.log()
检索到的文档快照显示如下:
{
"theDate":"Jan 31, 2018 12:00:00 AM",
"available":false,
"memberUid":"N76BviTCX8fLdErAjMHYqx2GEU63",
"organizationUid":"zv5A7UC8B7bKzePGPyaJ"
}
请注意,时区信息已消失。我想在此时执行代码仍然是“本地时区感知”,并且日期(对于我的本地时区)不正确。但是在更改'available'属性并将记录保存回FireStore时会出现问题。
请注意,它不再是FireStore中的日期,而是一个字符串。
针对NativeScript的Chrome DevTools调试器实际上显示,在将数据检索回应用程序时,检索到的日期属性已经是字符串而不再是日期。可能值得一提的是,我正在使用this NativeScript-Firebase plugin与Firestore进行交互......可能是根插件库中存在根问题吗?
如何确保从FireStore数据库中返回的值在我的代码中保留为日期?