JS实现:计算不同时区的当地时间

国内的时间都以北京时间为准(即东八区的时间),如何计算同一时间下其它时区的当地时间呢?

通常的做法,是计算出时区差,然后进行加减。

还有另一种方法,就是先把本地时间转为 0时区的utc时间(世界标准时间),再进行计算,如下所示。

javascript 复制代码
// zone 表示时区,正数为东时区,负数为西时区
function getlocalTime(zone){
    var d = new Date();
    // 获取本地时间
    var local_ms = d.getTime();
    // 本地时间与UTC时间的 时间偏移差(getTimezoneOffset的单位是min)
    var offset_ms = d.getTimezoneOffset() * 60 * 1000;
    // 转为utc时间,因为各时区的utc时间相同
    var utc_ms = local_ms + offset_ms;
    // 计算出 目标时区 的标准时间
    var target_ms = utc_ms + zone * 60 * 60 * 1000;
    return new Date(target_ms);
}

getLocalTime(8); // 获取 东八区-北京时间(中国)
getLocalTime(-8); // 获取 西八区-太平洋时间(美国和加拿大)
相关推荐
JieE2121 小时前
LeetCode 226. 翻转二叉树|JS 递归超详细拆解,二叉树入门经典题
javascript·算法
JieE2122 小时前
LeetCode 104. 二叉树的最大深度|递归思路超详细拆解
javascript·算法
爱勇宝2 小时前
鸿蒙生态的下半场:开发者不只要能开发,还要能赚钱
android·前端·程序员
IT_陈寒5 小时前
SpringBoot这个自动配置坑我跳了三次
前端·人工智能·后端
kyriewen5 小时前
我用 AI 一周写完了整个项目,上线第一天就崩了——这是我踩过最贵的 5 个坑
前端·javascript·ai编程
Larcher6 小时前
AI Loop:让AI像人一样自主完成任务的核心机制
javascript·人工智能·设计模式
默_笙6 小时前
🃏 JS 只有 8 种数据类型,但我花了 2 天才搞懂 null 和 undefined 的区别
javascript
牧艺6 小时前
从零到协同:构建类飞书在线文档系统的五个技术重难点
前端·人工智能
jump_jump6 小时前
流式 HTML:从 htmx 片段装配到浏览器原生增量渲染
javascript·性能优化·前端工程化
红尘散仙7 小时前
想写一个像样的终端 App?试试把 React 的开发体验搬进 Rust TUI
前端·rust