【发布时间】:2020-08-23 19:53:00
【问题描述】:
我想确定浏览器如何显示时间输入:
<input type="time">
显示为 24 小时制还是 12 小时制(添加了“AM/PM”选项)?
显示会影响设计,因为两个版本的宽度不同。我想保持多个输入的宽度尽可能紧凑。
我仔细看了其他文章,但是很多都比较老了,信息已经过时了,运行代码摘录时,结果并不一致。
此 JavaScript 仅采用语言环境(此处为:en_GB)并按如下方式应用它:
var hour_format = new Date().toLocaleTimeString();
console.log(hour_format); // Firefox: 18:12:34, Chrome: 6:12:34 PM, Edge: 18:12:34
附加说明:我在英国,我在 Windows 10 上使用 24 小时格式。浏览器反映了 24 小时系统偏好; JavaScript 时间字符串没有。当我更改为 12 小时格式(并重新启动)时,更改仅由 Chrome 应用。 JavaScript 示例中的值保持不变。我读过this article about GB locales,但它只是显示了不一致之处。
基本上,我只想知道浏览器显示的是哪一个。就是这样。
如果无法做到这一点,则强制输入以 24 小时格式显示是一种替代方法。
【问题讨论】:
-
如果通过检查浏览器用于显示本地格式化时间的格式以可靠的方式无法做到这一点,是否可以查询实际输入字段的宽度?
-
好的,这是使用宽度方法解决的一种。 Chrome 是一个棘手的浏览器,因此对时间输入元素的宽度进行检查会返回:24 小时格式为 65 像素,12 小时格式为 92 像素。这与字符串检查相结合应该足够准确。 “解决了”。
标签: javascript input time locale