哪个 JS 日期时间选取器正确处理 DST 转换

Which JS datetime picker handles DST transitions properly?

本文关键字:正确处理 DST 转换 选取 JS 日期 时间 哪个      更新时间:2023-09-26

我在弄清楚如何在应用程序前端处理本地日期时间时遇到了麻烦。

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

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

任何建议将不胜感激。

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

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

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

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

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

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

    • 以完整ISO8601扩展格式存储此内容,例如 2013-11-03T01:00:00-05:00
    • 看看您是否可以以某种方式直观地表示此选择会很有趣。 也许有两个选择显示偏移量(-04:00/-05:00)和/或缩写(EDT/EST)。

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

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