如何让JavaScript返回EST时区名称而非EDT或GMT?
如何让JavaScript时间始终显示为EST时区缩写
首先明确:没有直接的时区参数能让toLocaleString始终输出EST,原因如下:
- 使用
America/New_York时,JS会根据纽约时区的夏令时规则自动切换显示EDT(夏令时)或EST(冬令时),这是符合时区标准的行为。 - 直接指定
timeZone: 'EST'时,因为EST不是标准的IANA时区标识符,引擎会将其解析为UTC-5偏移,但输出的时区名称会是GMT-5而非EST。
如果你的需求是强制显示EST,不管当前是否处于夏令时,可以用以下两种方法实现:
方法一:替换时区名称
先使用America/New_York生成标准时间,再把自动输出的EDT或EST替换为固定的EST:
const date = new Date(); // 生成仅包含时间部分的格式(不含日期) const timePart = date.toLocaleString('en-US', { timeZone: 'America/New_York', hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: true }); // 强制替换时区缩写并拼接最终格式 const finalTime = `${timePart.replace(/EDT|EST/, '')} EST`.trim(); console.log(finalTime); // 输出示例:"03:32:11 PM EST"
方法二:手动拼接时间与时区
直接生成时间部分,再手动加上EST,避免依赖时区名称的自动输出:
const date = new Date(); const formattedTime = date.toLocaleTimeString('en-US', { timeZone: 'America/New_York', hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: true }); console.log(`${formattedTime} EST`); // 输出示例:"03:32:11 PM EST"
如果你的需求是仅在冬令时显示EST,夏令时显示EDT,那直接使用timeZone: 'America/New_York'即可,这是符合时区规范的正确做法。
内容的提问来源于stack exchange,提问作者iamro45
相关产品推荐
相关产品推荐

