使用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
相关产品推荐
相关产品推荐

