You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript获取指定时区的日期

获取指定时区的日期(原生JavaScript方案)

方法1:使用Intl.DateTimeFormat原生API(推荐)

ES6引入的Intl.DateTimeFormat支持直接指定时区,无需依赖任何外部库,兼容性覆盖绝大多数现代浏览器。以下是获取指定时区年、月、日的示例:

// 指定目标时区,比如"Asia/Shanghai"(东八区)或"America/New_York"(西五区)
const targetTimeZone = "Asia/Shanghai";
const date = new Date();

// 配置格式化规则,明确指定时区和需要获取的日期部分
const formatter = new Intl.DateTimeFormat('zh-CN', {
  timeZone: targetTimeZone,
  year: 'numeric',
  month: '2-digit',
  day: '2-digit'
});

// 获取格式化后的完整日期字符串
const formattedDate = formatter.format(date);
console.log(formattedDate); // 输出示例:"2024-05-20"

// 如需单独提取年、月、日的数值
const dateParts = formatter.formatToParts(date);
const year = dateParts.find(part => part.type === 'year').value;
const month = dateParts.find(part => part.type === 'month').value;
const day = dateParts.find(part => part.type === 'day').value;

console.log(year, month, day); // 分别输出年、月、日的字符串(可通过Number()转为数字)

方法2:手动计算时区偏移(兼容旧环境)

如果需要兼容不支持Intl.DateTimeFormat的老旧浏览器,可以通过UTC时间结合时区偏移量计算,但需注意该方法无法自动处理夏令时偏移变化:

// 目标时区的UTC偏移小时数,东八区为+8,西五区为-5
const targetTimeZoneOffset = 8;
const date = new Date();

// 计算目标时区对应的时间戳:UTC时间戳 + 目标时区偏移毫秒数 - 本地时区偏移毫秒数
const targetTimestamp = date.getTime() 
  + (targetTimeZoneOffset * 60 * 60 * 1000) 
  - (date.getTimezoneOffset() * 60 * 1000);
const targetDate = new Date(targetTimestamp);

// 此时调用getFullYear、getMonth、getDate得到的就是目标时区的日期
const year = targetDate.getFullYear();
const month = targetDate.getMonth(); // 注意:月份返回值为0-11,需加1转为1-12格式
const day = targetDate.getDate();

console.log(year, month + 1, day);

内容的提问来源于stack exchange,提问作者Eliseo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 03:15:59