時區介紹

来源: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
  • Timer是什麼 Timer 是一種用於創建定期粒度行為的機制。 與標準的 .NET System.Threading.Timer 類相似,Orleans 的 Timer 允許在一段時間後執行特定的操作,或者在特定的時間間隔內重覆執行操作。 它在分散式系統中具有重要作用,特別是在處理需要周期性執行的 ...
  • 前言 相信很多做WPF開發的小伙伴都遇到過表格類的需求,雖然現有的Grid控制項也能實現,但是使用起來的體驗感並不好,比如要實現一個Excel中的表格效果,估計你能想到的第一個方法就是套Border控制項,用這種方法你需要控制每個Border的邊框,並且在一堆Bordr中找到Grid.Row,Grid. ...
  • .NET C#程式啟動閃退,目錄導致的問題 這是第2次踩這個坑了,很小的編程細節,容易忽略,所以寫個博客,分享給大家。 1.第一次坑:是windows 系統把程式運行成服務,找不到配置文件,原因是以服務運行它的工作目錄是在C:\Windows\System32 2.本次坑:WPF桌面程式通過註冊表設 ...
  • 在分散式系統中,數據的持久化是至關重要的一環。 Orleans 7 引入了強大的持久化功能,使得在分散式環境下管理數據變得更加輕鬆和可靠。 本文將介紹什麼是 Orleans 7 的持久化,如何設置它以及相應的代碼示例。 什麼是 Orleans 7 的持久化? Orleans 7 的持久化是指將 Or ...
  • 前言 .NET Feature Management 是一個用於管理應用程式功能的庫,它可以幫助開發人員在應用程式中輕鬆地添加、移除和管理功能。使用 Feature Management,開發人員可以根據不同用戶、環境或其他條件來動態地控制應用程式中的功能。這使得開發人員可以更靈活地管理應用程式的功 ...
  • 在 WPF 應用程式中,拖放操作是實現用戶交互的重要組成部分。通過拖放操作,用戶可以輕鬆地將數據從一個位置移動到另一個位置,或者將控制項從一個容器移動到另一個容器。然而,WPF 中預設的拖放操作可能並不是那麼好用。為瞭解決這個問題,我們可以自定義一個 Panel 來實現更簡單的拖拽操作。 自定義 Pa ...
  • 在實際使用中,由於涉及到不同編程語言之間互相調用,導致C++ 中的OpenCV與C#中的OpenCvSharp 圖像數據在不同編程語言之間難以有效傳遞。在本文中我們將結合OpenCvSharp源碼實現原理,探究兩種數據之間的通信方式。 ...
  • 一、前言 這是一篇搭建許可權管理系統的系列文章。 隨著網路的發展,信息安全對應任何企業來說都越發的重要,而本系列文章將和大家一起一步一步搭建一個全新的許可權管理系統。 說明:由於搭建一個全新的項目過於繁瑣,所有作者將挑選核心代碼和核心思路進行分享。 二、技術選擇 三、開始設計 1、自主搭建vue前端和. ...
  • Csharper中的表達式樹 這節課來瞭解一下表示式樹是什麼? 在C#中,表達式樹是一種數據結構,它可以表示一些代碼塊,如Lambda表達式或查詢表達式。表達式樹使你能夠查看和操作數據,就像你可以查看和操作代碼一樣。它們通常用於創建動態查詢和解析表達式。 一、認識表達式樹 為什麼要這樣說?它和委托有 ...
  • 在使用Django等框架來操作MySQL時,實際上底層還是通過Python來操作的,首先需要安裝一個驅動程式,在Python3中,驅動程式有多種選擇,比如有pymysql以及mysqlclient等。使用pip命令安裝mysqlclient失敗應如何解決? 安裝的python版本說明 機器同時安裝了 ...