【发布时间】:2015-12-15 20:07:09
【问题描述】:
我正在创建一个基于浏览器的单页应用程序,它将从我控制的 API 中以 JSON 格式检索信息。 API 通常会返回大型、复杂的对象图(对象中的对象等)。许多对象包含“仅日期字段”(即仅与日期相关的字段) - 也就是说,如果一个字段设置为“2015 年 4 月 1 日”,它应该始终向用户显示为 4 月 1 日,无论用户的时区、夏令时等。当然,API 服务器的时区应该对显示的日期没有影响(并且可以假定永远固定)。
在服务器端 API 代码中,我可以轻松识别这些“仅日期字段”,并在将它们发送到客户端之前以任何方式对它们进行预处理。
在客户端,这些日期将以多种方式使用(显示在文本框和标签中,传递给 AngularJS 的“日期”过滤器,传递给第 3 方日期选择器控件等)。据我所知,这里最小的公分母是 Date() 构造函数 - 如果浏览器的 JavaScript Date() 构造函数能够正确解释日期,那么其他一切都会正常工作。
因此,我的第一个想法是预处理这些仅限日期的字段,以将它们转换为 Date() 构造函数可以正确解释的格式。事实证明,找到这样的格式并非易事(请参阅我的相关问题:JavaScript date-only format guaranteed to be interpreted as local time in modern browsers)
我的另一个想法是在客户端对 API 响应进行后处理(本质上,使用例如 moment.js 手动解析从 API 返回的所有字符串日期),但我想避免客户端 -梳理一个巨大的对象图并查找所有日期的侧面性能影响。
我猜这不是一个新的或特别独特的问题。还有其他我忽略的解决方案吗?如何在保持日期时区不可知的同时将仅日期字段从服务器传送到浏览器客户端?
【问题讨论】:
标签: javascript date datetime cross-browser timezone