1

我无法弄清楚如何在我的应用程序前端处理本地日期时间。

我想找到一个 JS 日期时间选择器,它可以识别时区(使用 moment.js)并正确处理 DST 转换(即:如果 00:00 在所选日期不存在,则不允许您选择它并让您选择在同一天发生的两个晚上 11:00 之间,通过向两个实例显示存在 DST 转换的某种视觉提示)。

在时间选择器中处理 DST 转换是否有任何建议或最佳实践?我似乎找不到任何东西。

任何建议,将不胜感激。

4

1 回答 1

0

很好的主意!但是 AFAIK 这并不作为任何类型的预制组件存在。我一直不得不自己编写这个,并且它最终被专门用于每个应用程序。我没有花时间编写可用于任何应用程序的通用版本。

您当然可以将其创作为 moment.js 插件。我们很乐意从 momentjs.com 网站链接它。如果您决定这样做,请告诉我。

就时区感知日期/时间选择器的一般建议而言 - 我认为您已经掌握了大部分内容,但回顾一下:

  • 不允许为目标时区选择无效的日期/时间。

    • 您可能会显示一个弹出窗口或验证错误,或者只是阻止选择以使其无法被选中。或这些方法的组合。

  • 如果为目标时区选择了不明确的日期/时间,请询问用户他们指的是两个实例中的哪一个。

    • 将其存储为完整的 ISO8601 扩展格式,例如2013-11-03T01:00:00-05:00.
    • 看看你是否能以某种方式在视觉上表示这个选择会很有趣。可能有两个选项显示偏移量 (-04:00/-05:00) 和/或缩写 (EDT/EST)。

  • 如果您还需要选择时区,请记住 IANA 时区的完整列表可能会令人生畏,有超过 500 个条目。

    • 您可能希望提供一下拉列表,一个用于国家/地区,一个用于按国家过滤的时区。您可以使用zone.tab数据按国家代码过滤。
    • 另一种方法是合并一个基于地图的时区选择器,例如这个
    • 您可以考虑使用jsTimeZoneDetect来猜测本地时区。
    • 当然,您可能只希望单独提供目标时区,以便实现您的控件的开发人员可以决定如何连接时区选择。
于 2013-10-15T17:46:07.820 回答