時區介紹

来源: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
  • 概述:本文代碼示例演示瞭如何在WPF中使用LiveCharts庫創建動態條形圖。通過創建數據模型、ViewModel和在XAML中使用`CartesianChart`控制項,你可以輕鬆實現圖表的數據綁定和動態更新。我將通過清晰的步驟指南包括詳細的中文註釋,幫助你快速理解並應用這一功能。 先上效果: 在 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • 概述:本示例演示了在WPF應用程式中實現多語言支持的詳細步驟。通過資源字典和數據綁定,以及使用語言管理器類,應用程式能夠在運行時動態切換語言。這種方法使得多語言支持更加靈活,便於維護,同時提供清晰的代碼結構。 在WPF中實現多語言的一種常見方法是使用資源字典和數據綁定。以下是一個詳細的步驟和示例源代 ...
  • 描述(做一個簡單的記錄): 事件(event)的本質是一個委托;(聲明一個事件: public event TestDelegate eventTest;) 委托(delegate)可以理解為一個符合某種簽名的方法類型;比如:TestDelegate委托的返回數據類型為string,參數為 int和 ...
  • 1、AOT適合場景 Aot適合工具類型的項目使用,優點禁止反編 ,第一次啟動快,業務型項目或者反射多的項目不適合用AOT AOT更新記錄: 實實在在經過實踐的AOT ORM 5.1.4.117 +支持AOT 5.1.4.123 +支持CodeFirst和非同步方法 5.1.4.129-preview1 ...
  • 總說周知,UWP 是運行在沙盒裡面的,所有許可權都有嚴格限制,和沙盒外交互也需要特殊的通道,所以從根本杜絕了 UWP 毒瘤的存在。但是實際上 UWP 只是一個應用模型,本身是沒有什麼許可權管理的,許可權管理全靠 App Container 沙盒控制,如果我們脫離了這個沙盒,UWP 就會放飛自我了。那麼有沒... ...
  • 目錄條款17:讓介面容易被正確使用,不易被誤用(Make interfaces easy to use correctly and hard to use incorrectly)限制類型和值規定能做和不能做的事提供行為一致的介面條款19:設計class猶如設計type(Treat class de ...
  • title: 從零開始:Django項目的創建與配置指南 date: 2024/5/2 18:29:33 updated: 2024/5/2 18:29:33 categories: 後端開發 tags: Django WebDev Python ORM Security Deployment Op ...
  • 1、BOM對象 BOM:Broswer object model,即瀏覽器提供我們開發者在javascript用於操作瀏覽器的對象。 1.1、window對象 視窗方法 // BOM Browser object model 瀏覽器對象模型 // js中最大的一個對象.整個瀏覽器視窗出現的所有東西都 ...