時區介紹

来源: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
  • 1、預覽地址:http://139.155.137.144:9012 2、qq群:801913255 一、前言 隨著網路的發展,企業對於信息系統數據的保密工作愈發重視,不同身份、角色對於數據的訪問許可權都應該大相徑庭。 列如 1、不同登錄人員對一個數據列表的可見度是不一樣的,如數據列、數據行、數據按鈕 ...
  • 前言 上一篇文章寫瞭如何使用RabbitMQ做個簡單的發送郵件項目,然後評論也是比較多,也是準備去學習一下如何確保RabbitMQ的消息可靠性,但是由於時間原因,先來說說設計模式中的簡單工廠模式吧! 在瞭解簡單工廠模式之前,我們要知道C#是一款面向對象的高級程式語言。它有3大特性,封裝、繼承、多態。 ...
  • Nodify學習 一:介紹與使用 - 可樂_加冰 - 博客園 (cnblogs.com) Nodify學習 二:添加節點 - 可樂_加冰 - 博客園 (cnblogs.com) 介紹 Nodify是一個WPF基於節點的編輯器控制項,其中包含一系列節點、連接和連接器組件,旨在簡化構建基於節點的工具的過程 ...
  • 創建一個webapi項目做測試使用。 創建新控制器,搭建一個基礎框架,包括獲取當天日期、wiki的請求地址等 創建一個Http請求幫助類以及方法,用於獲取指定URL的信息 使用http請求訪問指定url,先運行一下,看看返回的內容。內容如圖右邊所示,實際上是一個Json數據。我們主要解析 大事記 部 ...
  • 最近在不少自媒體上看到有關.NET與C#的資訊與評價,感覺大家對.NET與C#還是不太瞭解,尤其是對2016年6月發佈的跨平臺.NET Core 1.0,更是知之甚少。在考慮一番之後,還是決定寫點東西總結一下,也回顧一下.NET的發展歷史。 首先,你沒看錯,.NET是跨平臺的,可以在Windows、 ...
  • Nodify學習 一:介紹與使用 - 可樂_加冰 - 博客園 (cnblogs.com) Nodify學習 二:添加節點 - 可樂_加冰 - 博客園 (cnblogs.com) 添加節點(nodes) 通過上一篇我們已經創建好了編輯器實例現在我們為編輯器添加一個節點 添加model和viewmode ...
  • 前言 資料庫併發,數據審計和軟刪除一直是數據持久化方面的經典問題。早些時候,這些工作需要手寫複雜的SQL或者通過存儲過程和觸發器實現。手寫複雜SQL對軟體可維護性構成了相當大的挑戰,隨著SQL字數的變多,用到的嵌套和複雜語法增加,可讀性和可維護性的難度是幾何級暴漲。因此如何在實現功能的同時控制這些S ...
  • 類型檢查和轉換:當你需要檢查對象是否為特定類型,並且希望在同一時間內將其轉換為那個類型時,模式匹配提供了一種更簡潔的方式來完成這一任務,避免了使用傳統的as和is操作符後還需要進行額外的null檢查。 複雜條件邏輯:在處理複雜的條件邏輯時,特別是涉及到多個條件和類型的情況下,使用模式匹配可以使代碼更 ...
  • 在日常開發中,我們經常需要和文件打交道,特別是桌面開發,有時候就會需要載入大批量的文件,而且可能還會存在部分文件缺失的情況,那麼如何才能快速的判斷文件是否存在呢?如果處理不當的,且文件數量比較多的時候,可能會造成卡頓等情況,進而影響程式的使用體驗。今天就以一個簡單的小例子,簡述兩種不同的判斷文件是否... ...
  • 前言 資料庫併發,數據審計和軟刪除一直是數據持久化方面的經典問題。早些時候,這些工作需要手寫複雜的SQL或者通過存儲過程和觸發器實現。手寫複雜SQL對軟體可維護性構成了相當大的挑戰,隨著SQL字數的變多,用到的嵌套和複雜語法增加,可讀性和可維護性的難度是幾何級暴漲。因此如何在實現功能的同時控制這些S ...