如何使用JavaScript将UTC时间转换为IST时间?
将UTC时间转换为IST时间的JavaScript实现
针对你给出的UTC时间13:18:30,以下是两种可靠的转换方法:
方法一:手动计算时区偏移
印度标准时间(IST)比UTC快5小时30分钟(总计330分钟),可以通过拆分时间、计算总时长后叠加偏移量来转换:
function convertUtcToIst(timeStr) { // 拆分UTC时间为时、分、秒 const [utcHours, utcMinutes, utcSeconds] = timeStr.split(':').map(Number); // 计算UTC时间的总分钟数 const totalUtcMinutes = utcHours * 60 + utcMinutes; // 加上IST偏移量(5小时30分=330分钟) const totalIstMinutes = totalUtcMinutes + 330; // 计算IST的时、分,处理跨天情况 const istHours = totalIstMinutes >= 1440 ? totalIstMinutes / 60 - 24 : Math.floor(totalIstMinutes / 60); const istMinutes = totalIstMinutes % 60; // 格式化输出为两位数字的时分秒(秒数直接沿用,因为偏移不影响秒) return `${String(istHours).padStart(2, '0')}:${String(istMinutes).padStart(2, '0')}:${String(utcSeconds).padStart(2, '0')}`; } // 调用示例 console.log(convertUtcToIst('13:18:30')); // 输出 18:48:30
方法二:使用Intl.DateTimeFormat API(推荐)
利用JavaScript内置的国际化时间格式化API,直接指定IST对应的时区Asia/Kolkata,无需手动计算偏移:
function convertUtcToIst(timeStr) { // 构造一个UTC日期对象(这里用任意固定日期,仅时间部分有效) const utcDate = new Date(`2020-01-01T${timeStr}Z`); // 配置格式化选项:仅显示时分秒,时区设为印度标准时间 const options = { timeZone: 'Asia/Kolkata', hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false }; // 格式化并返回IST时间 return new Intl.DateTimeFormat('en-US', options).format(utcDate); } // 调用示例 console.log(convertUtcToIst('13:18:30')); // 输出 18:48:30
两种方法都能得到正确的IST时间18:48:30,方法二更简洁且不易出错,推荐使用。
内容的提问来源于stack exchange,提问作者Bennison J
相关产品推荐
相关产品推荐

