如何在JS中根据时区获取任意国家/地区的标准时间格式
JS基于时区获取对应当地时间格式的实现方案
可以直接用浏览器/Node.js原生内置的Intl国际化API实现,不需要引入任何第三方依赖,实现代码如下:
function getSpecificTimeFormat(timeZone) { // 初始化仅返回时间部分的格式化实例,自动匹配当地默认时间显示规则 const formatter = new Intl.DateTimeFormat('default', { timeZone: timeZone, hour: 'numeric', minute: 'numeric' }); const formatOptions = formatter.resolvedOptions(); const parts = formatter.formatToParts(new Date()); let formatStr = ''; parts.forEach(part => { switch(part.type) { case 'hour': formatStr += formatOptions.hour12 ? 'h' : 'HH'; break; case 'minute': formatStr += 'mm'; break; case 'dayPeriod': formatStr += ' a'; break; case 'literal': formatStr += part.value.trim() ? ':' : ' '; break; } }); return formatStr.trim(); }
效果验证
- 调用
getSpecificTimeFormat("America/New_York")返回h:mm a - 调用
getSpecificTimeFormat("Europe/Paris")返回HH:mm - 调用
getSpecificTimeFormat("Asia/Shanghai")返回HH:mm
注意:如果需要完全匹配特定地区的显示习惯,可以把
Intl.DateTimeFormat的第一个参数从'default'改成对应地区码,比如'en-US'、'fr-FR',结果会更贴合当地的格式规范。
内容的提问来源于stack exchange,提问作者Elma
相关产品推荐
相关产品推荐

