类似cli的时区选择建议
CLI-like Timezone Selection advice
简要总结:纯粹通过基于文本的用户输入来获取时区的最佳方式/最佳实践是什么?我在尝试一个非常棘手的任务吗?
背景是:我正在研究一个nodejs聊天机器人,它可以帮助安排一个主要在北美的小组的活动,但也有来自全球各地的参与者。我能够听取各种用户输入和相应的响应。但是,除了用户名之外,我可用的API不返回任何其他内容。
我的命令输入计划如下所示:
!Event datetime="MM-DD-YYYY h:mm a" timezone="PST" name="Foobar"
Through moment我可以用datetime解析一个moment。然而,我在应用时区方面失败了。我的客户通常不熟悉UTC/GMT系统。他们大多以北美或欧盟为基础,更习惯于缩写。我想使它尽可能地用户友好,但是我如何将它们的时区输入映射到tz数据库样式以便在代码中使用呢?我可以把他们重定向到关于tz数据库和所有不同城市的wiki页面,但它是一个相当大的列表,对普通人来说不是很友好。
我正在尝试时刻-时区,我所拥有的最接近的东西基本上是UTC偏移到描述+ tz数据库名称的映射表。比如:
var TIMEZONE_MAPPINGS = {
"UTC+9" : "Asia/Tokyo",
...
"UTC-8" : "America/Los_Angeles",
}
但我觉得这是非常hackish,并不是真的很适合夏令时,当我选择一个"众所周知"的项目为每个偏移。
有更好的方法来接收这样的输入吗?或者我应该放弃,通过UTC接收所有的东西,然后解释一下UTC是什么?
您应该只接受tzdb区域id,例如"America/Los_Angeles"
-
缩写不起作用,因为缩写可能有歧义。考虑到CST有5种不同的含义,包括中国标准时间。
-
来自固定偏移量的偏移量或映射不起作用,因为"Time Zone != Offset"。查看时区标签wiki在这里的StackOverflow。
特别地,考虑到
"America/Los_Angeles"
在一年中的部分时间里只有UTC-8,当它处于太平洋标准时间时。在一年中的其他时间,即夏季,使用UTC-7表示太平洋夏令时。另外,考虑到UTC+9在几个地方被观测到,而不仅仅是在
"Asia/Tokyo"
。例如,"Asia/Yakutsk
"全年使用,而"Asia/Ulaanbaatar"
只在夏季使用。
在命令行中,没有比原始标识符更好的选择了。如果您有某种UI,那么您可以提示本地化选择,但是对于原始命令行,您可以做的事情不多。
- 下拉选择可自动更改第二个下拉选择
- 如何使用jQuery选择下拉列表的值
- 获取用户选择的不带时区的日期
- 计算日期选择器+时间选择器是否在东部标准时区的过去
- 时区选择
- 如何在没有时区的情况下发送 AngularStrap 日期选择器值
- 是否可以获取我们在系统时区中选择的国家/地区名称.我们可以得到偏移量(如 5.5)但是如何获取国家名称
- 具有时区选择功能的 AngularJS 日期选择器
- bootstrap日期选择器:如何使用特定时区
- Kendo MVC日期选择器时区翻译
- 如何在js中为日期选择器而不是浏览器设置时区
- 附加“选定的”;选项在选择列表通过jquery[时区选择列表]
- 类似cli的时区选择建议
- 在任何时间日期选择器中以编程方式设置时区偏移量
- 如何在jQuery日期和时间选择器中使用javascript/jQuery调整时区
- 从用户选择的城市、国家获取时区的最佳方式是什么?
- Jquery日期时间选择器时区
- JQ UI日期选择器-时区
- 从不带时区的字符串中构造一个javascript日期(用于JqueryUI日期选择器)
- 如何填充Iana时区的选择列表?