有一个代表语言的字符串(可选择带国家信息),如何知道时间是显示为12H还是24H?
例如
is12HFormat('en_EN') // returns true
is12HFormat('es_ES') // returns false
请注意,我不想使用管道以特定格式显示时间,只是找出是否应该使用其中一个。
修改:
目前正在使用:
private guessIf12HTimeFormat(language: string): boolean {
const date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));
const dateString = date.toLocaleTimeString(language);
return (!!dateString.match(/am|pm/i) || !!date.toString().match(/am|pm/i));
}
答案 0 :(得分:1)
请注意hour12选项。
小时12:是否使用12小时时间(而不是24小时时间)。可能的值为true和false; 默认值取决于区域设置。
根据您要实现的目标,我还建议您查看具有“强大支持国际化”的moment.js。
也许:
var format = new Intl.DateTimeFormat('es-ES');
var usedOptions = format.resolvedOptions();
var use24 = !usedOptions.hour12;
答案 1 :(得分:0)
您可以使用vanila JavaScript实现它。这是一个例子。
var date = new Date();
此处设置hour12:true为12小时格式
date.toLocaleString('en-US', {hour12: true})
答案 2 :(得分:0)
对于那些迷迷糊糊的人,您可以通过DateTimeFormat.resolvedOptions
对某种格式默认使用的选项进行一些内省,但是您需要确保指定hour
作为格式的一部分,否则可能会至少在某些环境中被排除在外
const options = new Intl.DateTimeFormat('en-US', {
hour: 'numeric',
}).resolvedOptions();
alert(options.hour12)
在这里使用任何您想要的本地人。