時區介紹

来源:https://www.cnblogs.com/jmcui/archive/2023/01/29/17058596.html
-Advertisement-
Play Games

什麼是時區? 1884年在華盛頓召開的一次國際經度會議(又稱國際子午線會議)上,規定將全球劃分為24個時區(東、西各12個時區)。規定英國(格林尼治天文臺舊址)為中時區(零時區)、東1-12區,西1-12區。每個時區橫跨經度15度,時間正好是1小時。 時區的分類? 理論時區 上述時區定義其實是理論時 ...


什麼是時區?

1884年在華盛頓召開的一次國際經度會議(又稱國際子午線會議)上,規定將全球劃分為24個時區(東、西各12個時區)。規定英國(格林尼治天文臺舊址)為中時區(零時區)、東1-12區,西1-12區。每個時區橫跨經度15度,時間正好是1小時。

時區的分類?

理論時區

上述時區定義其實是理論時區。理論時區的時間採用其中央經線(或標準經線)的地方時。比如東八區的經度範圍是112.5°E~127.5°E,中央經線為120°E。

所以每差一個時區,區時相差一個小時,相差多少個時區,就相差多少個小時。東邊的時區時間比西邊的時區時間早。

法定時區

複原遼闊的國家,橫跨多個時區,常常以國家內部行政分界線為時區界線。這就是實際時區,即法定時區

比如中國的地理區劃,西至75°E,東至135°E,橫跨多個時區,然而實際上我們國家法定時區為東八區標準時。居住在我國西部,如新疆的同學應該深有感觸,北京時間早上六點時,當地時間可能還處於凌晨 3 點,天空一片漆黑。

而美國同樣橫跨多個時區,但是美國本土使用了西部時間(-8)、山地時間(-7)、中部時間(-6)、東部時間(-5),共四個時區(阿拉斯加和夏威夷群島分別是 -8 和 -10 )。所以簡單的說美國時區就是 -8 區,這是不正確的。

國際日期變更線

東 12 區和西 12 區的中央經線其實都是180°經線,為了避免同一個時區即存在新的一天,又存在舊的一天,人為規定 180° 以西至 0 點所在經線,為新的一天,以東為 舊 的一天。

但是太平洋上存在一些國家,行政區劃橫跨180°經線,為了方便管理,國際日期變更線其實不是一條直線。

前面提到,理論時區 只包括西 12 區~東 12 區 24 個時區。但是太平洋國家薩摩亞在2011年12月29日完結時把標準時間從國際日期變更線以東調整到國際日期變更線以西,即從時區 UTC-11 改為 UTC+13(夏時制由 UTC-10 改為UTC+14 )。因此,現行國際時區標準中,存在一個“東13區”。

常見的時間標準

一般說到時區,就會提到這幾個名詞,UTCGMTDSTCST,那這幾個名詞分別代表什麼含義呢?

GMT

GMT 即 Greenwich Mean Time, 代表格林威治標準時間

前文提到,1884 年國際經度會議決定選擇格林威治的子午線,作為劃分地球東西兩半球的經度零度。而格林威治皇家天文臺早在十七世紀,就已經是海上霸主大英帝國的擴張而進行天體觀測。

對全球而言,這裡所設定的時間是世界時間參考點,全球都以格林威治的時間作為標準來設定時間。

常說的時間戳 — timestamp,就是指格林威治時間 1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總秒數。

UTC

UTC 即 Coordinated Universal Time ,代表世界協調時間協調世界時

UTC 是經過平均太陽時(以格林威治時間 GMT 為準)、地軸運動修正後的新時標以及以“秒”為單位的國際原子時所綜合精算而成的時間,計算過程相當嚴謹精密。協調世界時 是最接近 GMT 的幾個替代時間系統之一。

普遍認為,UTC 時間被認為能與 GMT 時間互換,但 GMT 時間已不再被科學界所確定。

一般來說,當我們提到 UTC 時間而不帶任何別的修飾時,常指 UTC 0點。

UTC 和 GMT 唯一的差別,UTC 有閏秒,GMT 沒有

    // UTC 格林威治時間 2023-01-29T09:08:18.927058Z
    println(Instant.now())
    // UTC 格林威治時間 2023-01-29T09:08:18.941339Z
    println(Instant.now().atOffset(ZoneOffset.UTC))
    // UTC 北京時間    2023-01-29T17:08:18.942359+08:00[Asia/Shanghai]
    println(Instant.now().atZone(ZoneId.of("Asia/Shanghai")))
    // UTC 北京時間    2023-01-29T17:08:18.979096
    println(LocalDateTime.now())

DST

DST 即 Daylight Saving Time ,代表 日光節約時間 。這是一個完全由各國政府主導的行政行為,即與 GMT、UTC 這兩種基於地理的時間標準而言,DST 不是一種參考經線坐標的標準。

所謂日光節約時間,是指在夏天太陽升起的比較早時,將時鐘撥快一小時,以提早日光的使用,削減燈光照明和耗電開支。在英國則稱為夏令時間(Summer Time)。

全球仍有部分國家在實施夏令時。值得註意的是,我國在1986年至1991年期間也使用了夏令時,可以參考 百度百科-夏令時 中對中國政策部分的描述。

簡而言之,我們國家在上述時期的夏天, 列印出來的時區是 +9 區

    // 北京標準時間    1985-07-01T00:00+08:00[Asia/Shanghai]
    println(LocalDateTime.of(1985, 7, 1, 0, 0, 0).atZone(ZoneId.of("Asia/Shanghai")))
    // 北京夏令時間    1986-07-01T00:00+09:00[Asia/Shanghai]
    println(LocalDateTime.of(1986, 7, 1, 0, 0, 0).atZone(ZoneId.of("Asia/Shanghai")))
    // 北京標準時間 1992-07-01T00:00+08:00[Asia/Shanghai]
    println(LocalDateTime.of(1992, 7, 1, 0, 0, 0).atZone(ZoneId.of("Asia/Shanghai")))

各國標準

每個國家/地區使用的時區標準,都用不同的簡稱,可參考 moment.timezone.java.time.ZoneId 維護了一份國際時區標準中的地區名稱:

    public static final Map<String, String> SHORT_IDS = Map.ofEntries(
        entry("ACT", "Australia/Darwin"),
        entry("AET", "Australia/Sydney"),
        entry("AGT", "America/Argentina/Buenos_Aires"),
        entry("ART", "Africa/Cairo"),
        entry("AST", "America/Anchorage"),
        entry("BET", "America/Sao_Paulo"),
        entry("BST", "Asia/Dhaka"),
        entry("CAT", "Africa/Harare"),
        entry("CNT", "America/St_Johns"),
        entry("CST", "America/Chicago"),
        entry("CTT", "Asia/Shanghai"),
        entry("EAT", "Africa/Addis_Ababa"),
        entry("ECT", "Europe/Paris"),
        entry("IET", "America/Indiana/Indianapolis"),
        entry("IST", "Asia/Kolkata"),
        entry("JST", "Asia/Tokyo"),
        entry("MIT", "Pacific/Apia"),
        entry("NET", "Asia/Yerevan"),
        entry("NST", "Pacific/Auckland"),
        entry("PLT", "Asia/Karachi"),
        entry("PNT", "America/Phoenix"),
        entry("PRT", "America/Puerto_Rico"),
        entry("PST", "America/Los_Angeles"),
        entry("SST", "Pacific/Guadalcanal"),
        entry("VST", "Asia/Ho_Chi_Minh"),
        entry("EST", "-05:00"),
        entry("MST", "-07:00"),
        entry("HST", "-10:00")
    );

參考資料:
  1. 時區與JS中的Date對象
  2. java-8-date-localdate-localdatetime-instant

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Angularjs的工程化 AMD規範和CMD規範 為什麼需要模塊化管理工具 在編寫項目時可能需要載入很多js文件,若b.js依賴a.js,且a.js比b.js大很多,那麼瀏覽器會讓b.js等待a.js載入完畢後再去執行b.js里的內容;而即使d.js並不依賴a.js,b.js,c.js,也會等待這 ...
  • 前端面試題學習-HTML-個人總結 這是看別人總結的基礎上再度總結的,總結的鏈接如下 鏈接 1. DOCTYPE 的作用? 告知瀏覽器解析器用何標準解析文檔,若不指定則按相容模式進行解析(向後相容模擬老瀏覽器)。 IE5.5 引入的概念。 HTML5 之後無需指定,因為在之前的都是基於 SGML 的 ...
  • 實現Spring底層機制-03 7.實現任務階段5 7.1分析 階段5目標:bean後置處理器的實現 7.2代碼實現 新增: 1.創建 InitializingBean 介面,實現該介面的 Bean 需要實現 Bean 的初始化方法 bean後置處理器的兩個方法,調用時機分別在 Bean 初始化方法 ...
  • 一、QPython安裝配置 1.1. QPython介紹 QPython是一個可以在安卓設備運行python的腳本引擎。版本有QPython 3L和QPython 3C,3L為官方版本,可以在應用市場搜索下載。3C版本為"乘著船"大佬的修改版本。由於3L版本有許多許可權限制及很多包不能安裝,文章中使用 ...
  • 提示 個人博客首頁 免責聲明:僅供學習交流使用!開源框架可能存在的風險和相關後果將完全由用戶自行承擔,本人不承擔任何法律責任。 1. byob web 介紹 1.1 平臺主要組件 1.1.1 fask 1.1.2 SQLAlchemy 1.1.3 threading 1.1.4 socket 1.1 ...
  • 2023-01-29 一、redis事務與樂觀鎖相關命令 1、redis事務 (1)redis事務的含義 redis事務是一個單獨的隔離操作:事務中的所有命令都會序列化、按順序執行。事務在執行過程中,不會被其他客戶端送來的命令請求所打斷。 (2)redis事務的作用 redis事務的主要作用就是串聯 ...
  • 簡介 GraalVM是高性能的JDK,支持Java/Python/JavaScript等語言。它可以讓Java變成二進位文件來執行,讓程式在任何地方運行更快。這或許是Java與Go的一場戰爭? 下載安裝GraalVM 安裝GraalVM 首先到官網下載,我是直接到GitHub Release Pag ...
  • @(Matlab導入多個.mat文件並畫圖的過程詳解) 0. 實驗背景 需要導入多個.mat文件,將多組數據畫在一個圖中,並設置圖例、坐標軸、散點圖、折線圖、子圖等。 由於存在重覆操作,主要使用腳本文件編寫代碼。 figure視窗操作比較簡單,腳本文件不好寫的部分可用figure視窗操作進行輔助。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...