时区换算
城市↔城市/UTC 偏移/DST
全球主要城市当前时间
关于本工具
了解工具定位 · 使用场景 · 对比优势
输入城市名或 UTC 偏移,立即得到两地当前时间、时差以及夏令时生效状态。跨国会议组织者、远程团队协调人、跨境旅行规划者,无需手动推算时区。所有计算在浏览器内完成,城市与时间数据不上传服务器。
使用场景
跨国会议安排
远程团队分布在纽约、伦敦和上海,要找一个三方都合适的时间开会。本工具同时输入三个城市,自动显示各自的本地时间和 UTC 偏移,并标注 DST 是否生效。省去了手动查时区表、算夏令时的麻烦,直接锁定重叠的工作时段。
国际航班接机
从东京飞往巴黎的航班落地时间是当地时间 15:30,但接机人在巴黎,需要确认是否与自己的日程冲突。本工具输入出发城市和到达城市,快速换算两地实时时间,避免因时差误解而错过接机或提前数小时干等。
海外考试报名
报名美国线上考试,截止时间是 EST 23:59,但人在北京。本工具输入 UTC-5 的截止时间,自动换算为北京时间(UTC+8)并提示 DST 影响,确保在截止前完成提交,避免因时区换算错误导致报名失败。
跨时区项目交付
项目交付截止时间是 UTC 时间 18:00,团队分散在悉尼、新加坡和旧金山。本工具输入 UTC 时间,同时显示各城市对应本地时间,让每个成员明确自己的 deadline,无需各自翻时区表,减少沟通成本和误判风险。
海外亲友通话
想给在温哥华的家人打视频电话,但不确定对方现在是白天还是深夜。本工具输入对方城市,直接显示当前本地时间和 DST 状态,避开对方休息时段。相比手机自带时钟的单一城市显示,这里可以同时对比两个城市的实时时间。
对比矩阵本工具 vs 竞品 vs 传统方法
| 维度 | 本工具 | 竞品 A (timeanddate.com) | 传统方法 |
|---|---|---|---|
| 数据隐私 | 纯浏览器端计算,城市/时区数据不离开设备 | 查询需发送至服务器,服务器记录 IP 与查询内容 | 依赖人工查阅纸质时区手册或拨打国际长途查询,信息完全暴露给第三方 |
| 处理速度 | 输入城市名后,结果即时显示(<1 秒) | 需加载页面、等待服务器响应,通常 2-5 秒 | 人工翻阅资料或拨打电话,耗时数分钟至数小时不等 |
| 离线可用性 | 完全离线,无网络环境也可查询已加载的城市数据 | 必须联网,断网后无法使用任何功能 | 完全离线,依赖手头资料 |
| 查询灵活性 | 支持城市名直接搜索,自动匹配时区与夏令时 | 支持城市搜索,但部分功能(如会议时间规划)需多步操作 | 需手动计算 UTC 偏移量,并自行判断夏令时是否生效 |
| 数据覆盖范围 | 覆盖全球主要城市及 IANA 时区数据库 | 覆盖全球所有时区及绝大部分城市,数据更新及时 | 受限于手头资料的版本和更新频率,容易遗漏小城市或新时区 |
| 夏令时处理 | 自动识别并应用目标城市的夏令时规则,无需手动干预 | 自动识别夏令时,并在结果中明确标注 | 需人工查阅夏令时生效日期,手动加减 1 小时,极易出错 |
| 使用成本 | 免费,无任何功能限制 | 基础功能免费,高级功能(如会议邀请、API)需付费订阅 | 购买时区手册或支付国际电话费用,成本较高 |
使用指南
上手步骤 · 输入输出 · 避坑提示
使用步骤
- 在「城市 A」输入框键入或选择第一个城市名称(支持中文/英文),如「Shanghai」
- 在「城市 B」输入框键入或选择第二个城市名称,如「New York」
- 点击「换算」按钮,页面立即显示两地当前时间、UTC 偏移量及 DST 状态
- 查看结果区:左侧为城市 A 时间,右侧为城市 B 时间,中间标注时差(如 +13 小时)
- 如需反向查询,交换两城市输入框内容后再次点击「换算」
输入输出示例8 个典型场景,覆盖常规、边界与易错
| 输入 | 输出 | 说明 |
|---|---|---|
| 北京 → 纽约 | 北京(UTC+8)当前时间 2025-04-01 14:00 → 纽约(UTC-4,夏令时)当前时间 2025-04-01 02:00,相差 12 小时 | 典型场景:中美跨时区查询,含夏令时自动调整 |
| UTC+8 → UTC+0 | UTC+8 当前时间 2025-04-01 14:00 → UTC+0 当前时间 2025-04-01 06:00,相差 8 小时 | 典型场景:直接使用 UTC 偏移量换算,无城市依赖 |
| 伦敦 → 东京 | 伦敦(UTC+1,夏令时)当前时间 2025-04-01 07:00 → 东京(UTC+9)当前时间 2025-04-01 15:00,相差 8 小时 | 典型场景:欧亚主要城市换算,伦敦处于夏令时 |
| UTC-12 → UTC+14 | UTC-12 当前时间 2025-03-31 22:00 → UTC+14 当前时间 2025-04-01 12:00,相差 26 小时 | 边界 case:最大时区跨度,跨越国际日期变更线 |
| 悉尼 → 悉尼 | 悉尼(UTC+11,夏令时)当前时间 2025-04-01 13:00 → 悉尼(UTC+11,夏令时)当前时间 2025-04-01 13:00,相差 0 小时 | 边界 case:同城市查询,验证零时差输出 |
| UTC+5:30 → UTC+5:45 | UTC+5:30 当前时间 2025-04-01 12:00 → UTC+5:45 当前时间 2025-04-01 12:15,相差 15 分钟 | 边界 case:非整小时偏移(如尼泊尔 UTC+5:45),验证分钟级精度 |
| 北京 → 北京 | 北京(UTC+8)当前时间 2025-04-01 14:00 → 北京(UTC+8)当前时间 2025-04-01 14:00,相差 0 小时 | 易错 case:用户误以为不同城市名才能换算,实际同城市也可查 |
| UTC+8 → 上海 | UTC+8 当前时间 2025-04-01 14:00 → 上海(UTC+8)当前时间 2025-04-01 14:00,相差 0 小时 | 易错 case:UTC 偏移与城市时区相同,新手可能以为有差值 |
常见错误对照7 个常踩的坑 · 错误 → 修复
1. 混淆 UTC 偏移与夏令时状态
UTC+8 就是北京时间,全年不变北京时间是 UTC+8,但中国不实行夏令时;欧洲许多国家夏季用 UTC+2(CEST)、冬季用 UTC+1(CET)UTC 偏移是固定值,DST 是季节性调整;工具输出会同时标注偏移和是否处于 DST 期间,需区分两个字段
2. 输入城市名时带多余空格或全角字符
New York(全角空格) 或 东京(全角括号)New York(半角空格) 或 东京(无空格)工具匹配城市数据库时依赖精确字符串;全角字符、多余空格会导致无匹配结果
3. 用城市缩写而非标准 IANA 时区名
EST(美国东部标准时间,但冬季/夏季含义不同)America/New_York 或 New YorkEST/EDT/CST 等缩写歧义大(EST 可指美国东部或澳大利亚东部);工具优先识别 IANA 时区名或完整城市名
4. 忽略 DST 转换日的模糊时段
2024-03-10 02:30 New York 换算到 London2024-03-10 03:00 New York 换算到 London(避开 02:00-03:00 模糊区间)DST 开始日凌晨 2 点跳至 3 点,02:00-02:59 不存在;工具会提示该时间无效,需选择有效时刻
5. 把 UTC 偏移直接当城市本地时间
UTC+5:30 就是印度时间,所以印度比 UTC 快 5 小时 30 分印度标准时间(IST)是 UTC+5:30,但印度不实行 DST,全年固定;若目标城市有 DST,需额外计算UTC 偏移是理论值,实际本地时间可能因 DST 政策偏离;工具输出的「当前偏移」已包含 DST 调整
6. 输入非标准城市别名或旧名
Peking(北京旧拼写) 或 哥尼斯堡(今加里宁格勒)Beijing 或 Kaliningrad工具数据库使用现代标准名称;历史名称、非罗马化拼写、中文音译变体可能不被识别
7. 跨日期线换算时忽略日期变化
UTC+12 的斐济中午 12:00 换算到 UTC-12 的贝克岛,结果写 00:00 同一天斐济 12:00 → 贝克岛 00:00(前一日)或 次日 00:00(取决于方向)国际日期变更线两侧日期差一天;工具输出会显示完整日期,需留意日期列而非只看时间
工作原理
公式推导 · 流程图解 · 依据出处
核心公式
T_target = T_source + ΔT_UTC + ΔT_DST
变量说明
T_target— 目标城市本地时间T_source— 源城市本地时间ΔT_UTC— 两城市 UTC 偏移量之差(小时)ΔT_DST— 夏令时调整值(0 或 +1 小时)
示例
北京(UTC+8,无 DST)2025-06-15 14:00 → 纽约(UTC-5,夏令时 UTC-4)。ΔT_UTC = (-4) - (+8) = -12 小时,ΔT_DST = 0(北京无 DST)。T_target = 14:00 + (-12) + 0 = 02:00(同日期凌晨)。即北京下午 2 点对应纽约凌晨 2 点。
适用范围
适用于任意两个城市间的时间换算,前提是已知各城市的标准 UTC 偏移及夏令时生效状态。不适用于极地地区(如南极科考站使用特殊时区)或跨国际日期变更线场景(需额外调整日期)。数据来源:IANA Time Zone Database(tzdata)。
原理图
开发者集成
3 种主流语言 · 复制即用
from datetime import datetime, timezone, timedelta
import pytz
# 城市时区名(IANA 时区数据库)
source_tz = pytz.timezone('America/New_York')
target_tz = pytz.timezone('Asia/Shanghai')
# 当前时间(带源时区)
now = datetime.now(source_tz)
print(f"纽约时间: {now.strftime('%Y-%m-%d %H:%M:%S %Z%z')}")
# 转换到目标时区
target_time = now.astimezone(target_tz)
print(f"上海时间: {target_time.strftime('%Y-%m-%d %H:%M:%S %Z%z')}")
# 计算 UTC 偏移(小时)
utc_offset = now.utcoffset().total_seconds() / 3600
print(f"纽约 UTC 偏移: {utc_offset:+}h")
# 判断夏令时
print(f"纽约当前是否夏令时: {bool(now.dst())}")package main
import (
"fmt"
"time"
)
func main() {
// 加载时区
nyLoc, err := time.LoadLocation("America/New_York")
if err != nil {
panic(err)
}
shLoc, err := time.LoadLocation("Asia/Shanghai")
if err != nil {
panic(err)
}
// 当前时间(纽约)
nowNY := time.Now().In(nyLoc)
fmt.Printf("纽约时间: %s\n", nowNY.Format("2006-01-02 15:04:05 MST"))
// 转换到上海
nowSH := nowNY.In(shLoc)
fmt.Printf("上海时间: %s\n", nowSH.Format("2006-01-02 15:04:05 MST"))
// UTC 偏移(秒→小时)
_, offsetNY := nowNY.Zone()
fmt.Printf("纽约 UTC 偏移: %+dh\n", offsetNY/3600)
// 夏令时判断(通过偏移与标准偏移比较)
_, offsetStd := time.Date(2024, 1, 1, 12, 0, 0, 0, nyLoc).Zone()
isDST := offsetNY != offsetStd
fmt.Printf("纽约当前是否夏令时: %v\n", isDST)
}// 使用 Intl API(无需第三方库)
function convertTime(cityFrom, cityTo, date = new Date()) {
const fromOpts = { timeZone: cityFrom, hour12: false };
const toOpts = { timeZone: cityTo, hour12: false };
const fromStr = date.toLocaleString('en-CA', fromOpts); // yyyy-mm-dd HH:MM:SS
const toStr = date.toLocaleString('en-CA', toOpts);
console.log(`${cityFrom} 时间: ${fromStr}`);
console.log(`${cityTo} 时间: ${toStr}`);
// UTC 偏移(分钟)
const utcOffsetFrom = -date.getTimezoneOffset();
const utcOffsetTo = -new Date(date.toLocaleString('en-US', { timeZone: cityTo })).getTimezoneOffset();
console.log(`${cityFrom} UTC 偏移: ${utcOffsetFrom / 60}h`);
console.log(`${cityTo} UTC 偏移: ${utcOffsetTo / 60}h`);
// 夏令时:比较 1 月和 7 月的偏移
const jan = new Date(date.getFullYear(), 0, 1);
const jul = new Date(date.getFullYear(), 6, 1);
const janOffset = -jan.getTimezoneOffset();
const julOffset = -jul.getTimezoneOffset();
const isDST = julOffset !== janOffset;
console.log(`本地当前是否夏令时: ${isDST}`);
}
// 示例:纽约→上海
convertTime('America/New_York', 'Asia/Shanghai');常见问题
8 个高频疑问