技术博客
免费地震信息:timeLocal / timestampLocal 时区口径与跨时区处理

免费地震信息:timeLocal / timestampLocal 时区口径与跨时区处理

作者: 万维易源
2026-09-03
地震信息时区UTC北京时间
# 免费地震信息:timeLocal / timestampLocal 时区口径与跨时区处理 - **接口/接入点**:免费地震信息 · 2274-1 - **是否免费**:是(注册即免费额度) - **请求方式**:POST / GET - **返回格式**:JSON - **适用人群**:开发者、数据分析师、跨境/跨时区应用 - **阅读时间**:约 7 分钟 ## 核心要点 - 每条地震同时返回 `timeLocal`/`timestampLocal`(当地)与 `timeUTC`/`timestampUTC`(UTC)。 - 实测:`timeLocal` 实为**北京时间(UTC+8)**,并非震中当地时——美国记录里 `timeLocal` 与 `timeUTC` 相等(都按 UTC 显示)。 - 跨时区展示时,建议统一用 `timeUTC` 做基准,再按用户所在时区格式化,避免误导。 ## Why:时区搞错,时间就差 8 小时 如果你的 App 面向全球用户,贸然把 `timeLocal` 当成「震中当地时」展示,美国用户会看到一条「当地时间等于 UTC」的怪数据。本文用实测证据讲清 `timeLocal` 的真实口径,并给出跨时区处理方案。 ## What:接口速览 | 项 | 值 | |----|----| | 接口地址 | `https://route.showapi.com/2274-1?appKey={your_appKey}` | | 相关字段 | `timeLocal`/`timestampLocal`、`timeUTC`/`timestampUTC` | | 计费 | 免费(档位限制见 [免费 API 说明](https://www.showapi.com/free-api)) | ## How:实测证据 取 2025-01-20 的中美两条记录对比: ```json { "showapi_res_body": { "earthquakes": [ { "location": "四川内江市市中区", "from": "ceic", "timeLocal": "2025-01-20 21:59:54", "timestampLocal": 1737381594000, "timeUTC": "2025-01-20 13:59:54", "timestampUTC": 1737352794000 }, { "location": "加利福尼亚间歇泉西北7 公里处", "from": "usgs", "timeLocal": "2025-01-20 15:23:01", "timestampLocal": 1737357781910, "timeUTC": "2025-01-20 15:23:01", "timestampUTC": 1737357781910 } ] } } ``` 观察: - **中国记录(ceic)**:`timeLocal` 比 `timeUTC` 早 8 小时 → `timeLocal` = 北京时间(UTC+8)。 - **美国记录(usgs)**:`timeLocal` == `timeUTC` → 即把 UTC 直接当作「当地」,并非加州当地时(加州应为 UTC-8)。 结论:`timeLocal` 是**北京时间(UTC+8)**,是接口提供方的本地时,不是震中当地时。 ### 跨时区展示建议(JavaScript) ```javascript // 用 UTC 基准,按用户时区格式化(不依赖 timeLocal) const ts = eq.timestampUTC; // 毫秒 const fmt = new Intl.DateTimeFormat("zh-CN", { timeZone: "Asia/Shanghai", // 改成用户时区,如 America/Los_Angeles dateStyle: "medium", timeStyle: "medium", }); console.log(fmt.format(new Date(ts))); ``` ## 返回示例与解析 | 字段 | 含义 | 实测口径 | |------|------|---------| | `timeUTC` / `timestampUTC` | UTC 时间 | 真实 UTC,跨时区基准 | | `timeLocal` / `timestampLocal` | 「当地」时间 | **北京时间(UTC+8)**,非震中当地时 | ## 进阶 / 边界 - **永远以 `timeUTC` 为基准**:存库、计算、跨时区展示都用语 UTC,展示时再格式化到目标时区,最稳妥。 - **不要相信 `timeLocal` 是震中当地时**:美国记录会暴露它其实是 UTC,误导性强。 - **timestamp 单位**:`timestampLocal`/`timestampUTC` 均为**毫秒**级(13 位),转 `Date` 时勿当秒用。 ## FAQ **Q1:timeLocal 到底是哪个时区?** 实测为北京时间(UTC+8)。美国记录里 timeLocal 与 timeUTC 相等,说明它并非震中当地时,而是接口方的本地时(北京)。 **Q2:做全球应用该用哪个字段?** 统一用 `timeUTC`/`timestampUTC`(真实 UTC)。展示时按用户所在时区格式化,避免 8 小时偏差。 **Q3:timestamp 是秒还是毫秒?** 接口返回的是毫秒(13 位)。前端 `new Date(毫秒)` 直接用;若用秒级 API 需 ×1000。 **Q4:为什么美国地震的当地时间和 UTC 一样?** 因为接口把 UTC 直接填进了 `timeLocal`,并未换算成加州当地时(UTC-8)。这正是 timeLocal 实为「北京时间口径」的反证之一。 ## 相关能力 / 下一步阅读 - [免费地震信息:返回字段全解(ret_code / mag / from 一文读懂)](https://www.showapi.com/guides/earthquake-info-response-fields-2274) - [免费地震信息:数据来源 usgs / ceic 有什么区别?该怎么用](https://www.showapi.com/guides/earthquake-info-data-sources-2274) - [免费地震信息:震级(mag)与烈度到底有什么区别?字段口径详解](https://www.showapi.com/guides/earthquake-info-mag-vs-intensity-2274) - **本系列共 14 篇**:查看[免费地震信息指南总目录](https://www.showapi.com/guides/earthquake-info-guides-2274)