如何用TypeScript基于时区计算不同地区的时间差(小时和分钟)
计算本地时间与指定时区时间的差值
你当前代码里的arr是格式化后的字符串,没法直接和currentTime(Date对象)计算时间差。得先把目标时区的时间转换成可用于计算的Date对象,再一步步算出小时和分钟级别的差值。
下面是修正后的TypeScript代码:
const timeZone = "Asia/tokyo"; // 可按需修改目标时区 // 将指定时区的当前时间转为Date对象 const targetTime = new Date(new Date().toLocaleString("en-US", { timeZone })); const currentTime = new Date(); // 计算两个时间的毫秒差,取绝对值避免负数 const diffMs = Math.abs(currentTime.getTime() - targetTime.getTime()); // 把毫秒差转换为小时和分钟 const diffHours = Math.floor(diffMs / (1000 * 60 * 60)); const diffMinutes = Math.floor((diffMs % (1000 * 60 * 60)) / (1000 * 60)); console.log(`两地时间差:${diffHours}小时${diffMinutes}分钟`);
关键步骤说明
- 先用
toLocaleString结合指定时区生成对应时间的字符串,再用new Date()将其转为Date对象,这样就能拿到目标时区当前时间的时间戳 - 计算毫秒差后,通过整除和取余操作,把毫秒数拆解为小时和分钟
- 用
Math.abs确保差值为正数,不用纠结本地和目标时区哪个更早
内容的提问来源于stack exchange,提问作者coding....
相关产品推荐
相关产品推荐

