為什么時間和日期的算法不一樣?
日期和時間
1 基本概念
時區
我們都知道,同一時刻,世界上各個地區的時間可能是不一樣的,具體時間與時區有關,一共有24個時區,英國格林尼治是0時區,北京是東八區,也就是說格林尼治凌晨1點,北京是早上9點。0時區的時間也稱為GMT+0時間,GMT是格林尼治標準時間,北京的時間就是GMT+8:00。
時刻和Epoch Time (紀元時)
所有計算機系統內部都用一個整數表示時刻,這個整數是距離格林尼治標準時間1970年1月1日0時0分0秒的毫秒數。為什么要用這個時間呢?更多的是歷史原因,本文就不介紹了。
格林尼治標準時間1970年1月1日0時0分0秒也被稱為Epoch Time (紀元時)。
這個整數表示的是一個時刻,與時區無關,世界上各個地方都是同一個時刻,但各個地區對這個時刻的解讀,如年月日時分秒,可能是不一樣的。
如何表示1970年以前的時間呢?使用負數。
年歷
我們都知道,中國有公歷和農歷之分,公歷和農歷都是年歷,不同的年歷,一年有多少月,每月有多少天,甚至一天有多少小時,這些可能都是不一樣的。
比如,公歷有閏年,閏年2月是29天,而其他年份則是28天,其他月份,有的是30天,有的是31天。農歷有閏月,比如閏7月,一年就會有兩個7月,一共13個月。
公歷是世界上廣泛采用的年歷,除了公歷,還有其他一些年歷,比如日本也有自己的年歷。Java API的設計思想是支持國際化的,支持多種年歷,但實際中沒有直接支持中國的農歷,本文主要討論公歷。
總結
時刻是一個絕對時間,對時刻的解讀,如年月日周時分秒等,則是相對的,與年歷和時區相關。
下一篇怎么做抖音短視頻創業