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

使用Vanilla JavaScript获取任意国家的时间信息

实现方法

你已经拿到的时区数值是相对于UTC的偏移秒数(比如德里的19800秒对应UTC+5:30),直接用这个值就能计算目标时区的时间,不需要依赖国家代码(如果要做本地化格式显示,再结合国家代码即可)。

步骤1:计算目标时区的时间戳

先获取当前UTC时间戳,加上时区偏移秒数(转换为毫秒),得到目标时区对应的时间戳:

// 从OpenWeatherAPI获取的时区偏移秒数
const timezoneOffsetSeconds = 19800; // 德里的UTC+5:30

// 计算目标时区时间戳(毫秒)
const targetTimestamp = Date.now() + (timezoneOffsetSeconds * 1000);

步骤2:提取日期时间各项信息

用计算好的时间戳创建Date对象,通过UTC系列方法提取所需信息(必须用UTC方法,因为时间戳已经调整为目标时区的UTC等价时间):

const targetDate = new Date(targetTimestamp);

// 提取各项原始数值:
const year = targetDate.getUTCFullYear();
const month = targetDate.getUTCMonth() + 1; // 原生月份是0-11,加1转为1-12
const date = targetDate.getUTCDate();
const dayOfWeek = targetDate.getUTCDay(); // 0=周日,1-6=周一到周六
const hours = targetDate.getUTCHours();
const minutes = targetDate.getUTCMinutes();

步骤3:(可选)按国家代码本地化显示

如果需要根据目标国家的语言习惯格式化日期时间(比如不同语言的月份、星期名称),可以用Intl.DateTimeFormat结合国家代码:

const countryCode = 'IN'; // 从API获取的国家代码

// 自定义本地化格式
const formatter = new Intl.DateTimeFormat(countryCode, {
  year: 'numeric',
  month: 'long',
  day: 'numeric',
  weekday: 'long',
  hour: '2-digit',
  minute: '2-digit',
  hour12: true // 可选,是否启用12小时制
});

console.log(formatter.format(targetDate));
// 印度英语环境下输出示例:"Tuesday, 17 September 2024, 03:45 PM"

完整示例代码

// 模拟从OpenWeatherAPI返回的数据
const weatherApiData = {
  name: 'Delhi',
  sys: { country: 'IN' },
  timezone: 19800
};

// 计算目标时区时间戳
const targetTimestamp = Date.now() + (weatherApiData.timezone * 1000);
const targetDate = new Date(targetTimestamp);

// 提取原始时间信息
const rawTimeInfo = {
  year: targetDate.getUTCFullYear(),
  month: targetDate.getUTCMonth() + 1,
  date: targetDate.getUTCDate(),
  dayOfWeek: targetDate.getUTCDay(),
  hours: targetDate.getUTCHours(),
  minutes: targetDate.getUTCMinutes()
};

console.log('原始时间信息:', rawTimeInfo);

// 本地化显示
const localFormatter = new Intl.DateTimeFormat(weatherApiData.sys.country, {
  year: 'numeric',
  month: 'long',
  day: 'numeric',
  weekday: 'long',
  hour: '2-digit',
  minute: '2-digit',
  hour12: true
});

console.log('本地化时间:', localFormatter.format(targetDate));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:30:46