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); // 获取 西八区-太平洋时间(美国和加拿大)
相关推荐
光影少年5 小时前
react navite环境与工程化
前端·react native·react.js
PedroQue995 小时前
v2.6.0 新增全局返回守卫与 iOS 侧滑拦截,补齐跨端路由拦截能力
前端·uni-app
lichenyang4535 小时前
从「房间」到「实时通知」:用 NestJS + Socket.IO 实现团队邀请的完整工程实践
前端·后端
ly76895 小时前
Vue 3 从入门到工程实践:基础语法、组件化、路由、状态管理与项目部署
前端·javascript·vue.js
掘金酱5 小时前
TRAE Work 实战帮征文 | 获奖名单公示
前端·人工智能·后端
陆枫Larry6 小时前
Chromium和Chrome到底是什么关系?
前端
a1117766 小时前
模仿刀剑神域风格 作品集网页
前端·开源
a1117766 小时前
Elemental Sandbox(元素沙盒)-Three.js 游戏技能特效
前端·开源
用户69371750013846 小时前
前阵子刷屏的 Ox-Alpha 真身揭晓!GLM-5.3-Flash 上线,这价格真的杀疯了
前端·后端·github
四千岁6 小时前
抓包LangChain-了解LangChain的原理
前端·javascript·后端