摘要:科普一下什么是時區(qū)眾所周知地球繞著太陽轉的同時也會自轉因此同一時刻不同地區(qū)所接收到太陽照射的情況不同所以有的地區(qū)是日出有的地區(qū)是日落還有的地區(qū)可能是黑夜既然地球上的不同地區(qū)時間不同那總要有統(tǒng)一的時間刻度才能方便文化科技交流吧不然大家說的都是
科普一下什么是時區(qū)
眾所周知,地球繞著太陽轉的同時也會自轉,因此同一時刻不同地區(qū)所接收到太陽照射的情況不同,所以有的地區(qū)是日出,有的地區(qū)是日落,還有的地區(qū)可能是黑夜.
既然地球上的不同地區(qū)時間不同,那總要有統(tǒng)一的時間刻度才能方便文化科技交流吧,不然大家說的都是當?shù)貢r間,這樣豈不是亂套了?
有問題就要解決問題,不同地區(qū)時間不同就要統(tǒng)一時間標準,而統(tǒng)一時間標準的前提就是要弄清楚全球的時間差異到底在哪以及各地的當?shù)貢r間如何互相轉換.
原來的時間標準是格林尼治標準時間,隨著精確計時的發(fā)展需要,已被新的時間標準所取代,目前的時間標準是世界協(xié)調時.
現(xiàn)在有了統(tǒng)一的時間標準,不同地區(qū)的時間就可以統(tǒng)一換算成世界協(xié)調時再轉換成當?shù)貢r間了,再也不會出現(xiàn)同一時刻不同時間了!
示例:
北京時間(UTC+8) : 2019-05-30 13:30:00
世界時間(UTC) : 2019-05-30 05:30:00
東部時間(UTC-5) : 2019-05-30 00:30:00
格林尼治標準時間格林尼治標準時間(又稱格林威治平均時間或格林威治標準時間,英文是GreenwichMeanTime,簡稱GMT ),格林尼治標準時間的正午是指當太陽橫穿格林尼治子午線時(也就是在格林尼治時)的時間.
格林尼治是英國倫敦的一個小鎮(zhèn),是地理經(jīng)度的起點,本初子午線所在的經(jīng)度是零度經(jīng)度,所在的時區(qū)是零時區(qū).
我們知道一天共有 24 小時,對應著全球 24 個時區(qū),而地球自西向東自轉,零時區(qū)后依次是東一區(qū)到東十一區(qū),然后是東十二區(qū).緊接著是西十二區(qū),西十一區(qū)到西一區(qū),最后又回到零時區(qū).
其中東十二區(qū)和西十二區(qū)是同一個時區(qū),又被稱為東西十二區(qū).
總的來說,時區(qū)分為東十二區(qū)和西十二區(qū)以及零時區(qū),其中東西十二區(qū)是同一個時區(qū),因此共有 24 個時區(qū).
示例:
由于北京位于東八區(qū),比零時區(qū)多個 8 個時區(qū),意味著北京時間比格林標準時間快 8 個小時.
所以,北京時間中午 12 點整的時候,格林尼治才清早 4 點鐘,估計還在睡覺呢! ( GMT+8 就是北京時間)
格林尼治標準時間與地球自轉有關,不能滿足精確計時的需求,因此不再作為標準時間,取而代之的是協(xié)調世界時.協(xié)調世界時
協(xié)調世界時(又稱世界統(tǒng)一時間或世界標準時間或國際協(xié)調時間,英文是Coordinated Universal Time,簡稱UTC ),協(xié)調世界時是以原子時秒長為基礎,在時刻上盡量接近于格林尼治標準時間的一種時間計量系統(tǒng).
在不需要精確到秒的情況下, GMT 和 UTC 基本一致,但 UTC 是以更加精確的原子時為基礎,因此常用于科學計算領域,也是目前時間計量的統(tǒng)一標準.
示例:
北京時間 12:00 ,換算成 GMT 或 UTC 時間都是 04:00 ( UTC+8 也是北京時間)
北京時間北京時間(又稱中國標準時間),是首都北京所在的時區(qū)作為中國的標準時間,比格林尼治標準時間快8小時.
我國幅員遼闊,從西到東橫跨東五,東六,東七,東八和東九等五個時區(qū).所以全國統(tǒng)一采用首都北京所在的東八時區(qū)的區(qū)時作為標準時間,也就是北京時間.
時區(qū)信息數(shù)據(jù)庫時區(qū)信息數(shù)據(jù)庫,又稱 Olson數(shù)據(jù)庫,是一個主要應用于電腦程序以及操作系統(tǒng)的可協(xié)作編輯世界時區(qū)信息的數(shù)據(jù)庫.
時區(qū)信息數(shù)據(jù)庫采用按“區(qū)域/位置”命名規(guī)范,方便應用于計算機世界,其中英文地名中的空格用下劃線“_”代替,連詞符“-”只在英文地名本身包含時使用.
示例:
Asia/Hong_Kong : 亞洲/香港
Asia/Macau : 亞洲/澳門
Asia/Shanghai : 亞洲/上海
Asia/Taipei : 亞洲/臺北
Asia/Urumqi : 亞洲/烏魯木齊
上述時區(qū)主要是 php 中所支持的中國時區(qū),參考 亞洲所支持的時區(qū)列表關于時區(qū)的編程實現(xiàn)
時區(qū)不僅僅是現(xiàn)實生活的問題,計算機編程世界也有時間,自然也離不開時區(qū)的概念.
在計算機世界中,一切都是數(shù)據(jù),最好時區(qū)的概念也能體現(xiàn)在相關數(shù)據(jù)庫中,幸運的是已經(jīng)有前輩為我們提供了時區(qū)信息數(shù)據(jù)庫,而各類語言基本都會提供時區(qū)的工具類.
php 中的日期時間函數(shù)庫是 php 內置函數(shù)庫,我們可以方便地操作時間,設置時區(qū)等.
正常情況下, date 擴展默認是啟用的,我們可以輸入 phpinfo 打印出 php 的基本信息,然后搜索關鍵字 date 就可以找到關于 date 擴展的相關信息.
示例
"; // 獲取當前時區(qū) echo "當前時區(qū): ".date_default_timezone_get()."
"; // 當前時間 echo "當前時間: ".date("Y-m-d H:i:s")."
"; // 打印 php 信息 phpinfo(); ?>
結果
默認時區(qū):
當前時區(qū): UTC
當前時間: 2019-05-30 05:30:00
選項 | 值 |
---|---|
date/time support(日期時間支持情況) | enabled(已啟用) |
timelib version(時間庫版本) | 2016.05(2016.05) |
"Olson" Timezone Database Version(Olson 時區(qū)數(shù)據(jù)庫版本) | 2018.5(2018.5) |
Timezone Database(時區(qū)數(shù)據(jù)庫) | internal(內部的) |
Default timezone(默認時區(qū)) | UTC(協(xié)調世界時) |
由此可見,假設不設置時區(qū)的話,默認時區(qū)是協(xié)調世界時,該時區(qū)和北京時間相比慢 8 個小時!設置時區(qū)的三種姿勢
翻閱 php 開發(fā)文檔中可以找到目前所有支持時區(qū)列表,下面整理出關于中國的主要時區(qū).
Asia/Hong_Kong : 亞洲/香港
Asia/Macau : 亞洲/澳門
Asia/Shanghai : 亞洲/上海
Asia/Taipei : 亞洲/臺北
Asia/Urumqi : 亞洲/烏魯木齊
常用時區(qū)是上海,并沒有北京,當然也可以設置成 PRC (中華人民共和國)!
如果沒有設置時區(qū)的話,默認時區(qū)應該是協(xié)調世界時(UTC),雖說是通用的時間標準,但轉換成當?shù)貢r間還是需要一定換算的,而且看起來也不太舒服.
所以最好還是修改一下時區(qū)的設置項,如果業(yè)務不考慮國際化需求,那么永久性把時區(qū)固定就可以了,如果有國際化的業(yè)務場景,那么最好能夠動態(tài)設置時區(qū),這樣就能清楚知道當?shù)貢r間了.
因此,下面主要提供兩種方式來設置時區(qū),分別是靜態(tài)設置和動態(tài)設置,其中動態(tài)設置又提供了兩種方法.
靜態(tài)修改 php 配置php 的配置文件默認位于 : /private/etc/php.ini ,打開文件后修改 date.timezone 選項.
由于這種方法是直接修改配置文件,因此時區(qū)設置后適用于所有腳本,只不過需要重啟服務器方可生效.
示例
[Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone ;date.timezone = ; http://php.net/date.default-latitude ;date.default_latitude = 31.7667 ; http://php.net/date.default-longitude ;date.default_longitude = 35.2333 ; http://php.net/date.sunrise-zenith ;date.sunrise_zenith = 90.583333 ; http://php.net/date.sunset-zenith ;date.sunset_zenith = 90.583333
結果
# 去掉;并設置時區(qū),取值可以是PRC,也可以是Asia/Shanghai等時區(qū) date.timezone = PRC
詳情請參考: http://php.net/date.timezone動態(tài)設置 php 配置
ini_set 支持設置當前腳本的默認時區(qū)選項.
靜態(tài)設置時區(qū)僅僅適合時區(qū)固定的情況,如果需要動態(tài)切換時區(qū),修改配置文件就不能滿足這種情況了.
因此,php 中還提供了動態(tài)修改 php.ini 配置文件的方法,ini_set() 方法剛好支持動態(tài)設置時區(qū).
不用重啟服務器,但僅僅針對當前腳本生效,其中 ini_set 方法支持的 php.ini 配置選項列表
示例
// 設置當前時區(qū) ini_set("date.timezone", "Asia/Tokyo"); // 獲取默認時區(qū) echo "當前時區(qū): ".ini_get("date.timezone")."
"; // 當前時間 echo "當前時間: ".date("Y-m-d H:i:s")."
";
結果
當前時區(qū): Asia/Tokyo
當前時間: 2019-05-30 14:30:00
date_default_timezone_set 方法用于設置當前腳本的默認時區(qū).
ini_set 雖然支持設置時區(qū)選項,但畢竟不是專業(yè)設置時區(qū)的方法,date_default_timezone_set 才是專門設置時區(qū)的方法.
這兩個方法都屬于動態(tài)設置時區(qū),也都是針對當前腳本生效,也都不用重啟服務器就能立馬生效.
示例
// 獲取當前時區(qū) echo "當前時區(qū): ".date_default_timezone_get()."
"; // 設置當前時區(qū) date_default_timezone_set("UTC"); // 獲取當前時區(qū) echo "當前時區(qū): ".date_default_timezone_get()."
"; // 當前時間 echo "當前時間: ".date("Y-m-d H:i:s")."
";
結果
當前時區(qū): Asia/Tokyo
當前時區(qū): UTC
當前時間: 2019-05-30 05:30:00
時區(qū)和時間密切相關,統(tǒng)一時間說的其實是統(tǒng)一時間的標準,這樣一個地區(qū)的當?shù)貢r間就可以輕易轉換成另一個地區(qū)的當?shù)貢r間了.
目前世界上統(tǒng)一的時間標準是協(xié)調時間時(UTC),中國的時間標準是北京時間,北京時間比協(xié)調時間時快 8 個小時.
現(xiàn)實世界的時區(qū)也要反映到計算機世界,其中時區(qū)信息數(shù)據(jù)庫就是用于表示現(xiàn)實世界的時區(qū)概念.
由此可見,時區(qū)是一個通用概念,不僅 php 有時區(qū),java 和 js 等語言也有時區(qū)概念,可以說只要有時間的地方都離不開時區(qū).
關于時區(qū)的小技能,你 get 到了嗎?
美劇<<閃電俠>>當?shù)貢r間是星期二晚上八點開播,請問北京時間何時開播?
英劇<<神探夏洛克>>北京時間凌晨四點半開播,請問當?shù)貢r間是何時開播?
泰劇<<新鐵石心腸>>當?shù)貢r間是晚上九點二十開播,請問北京時間是何時?
參考資料時區(qū)相關知識掃盲
時區(qū)時差時間換算
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://m.hztianpu.com/yun/31611.html
摘要:已經(jīng)超出本地存儲限定大小可進行超出限定大小之后的操作,如下面可以先清除記錄,再次保存面試官一波素質三連對于只是會使用的同學來說,肯定是不得其解的。 最近面試的時候關于html5API總會被問到localStorage的問題, 對于一般的問題很簡單,無非就是 localStorage、sessionStorage和cookie這三個客戶端緩存的區(qū)別 localStorage的API,g...
摘要:函數(shù)防抖場景假設網(wǎng)站有個搜索框用戶輸入文本我們會自動聯(lián)想匹配出一些結果供用戶選擇我們可能首先想到的做法就是監(jiān)聽事件然后異步查詢結果但是如果用戶快速的輸入了一串字符假設是個字符那么就會在瞬間觸發(fā)次請求這無疑不是我們想要的我們想要的是用戶停止輸 函數(shù)防抖 場景 假設網(wǎng)站有個搜索框, 用戶輸入文本我們會自動聯(lián)想匹配出一些結果供用戶選擇,我們可能首先想到的做法就是監(jiān)聽keypress事件, 然...
摘要:一直使用定義變量,的出現(xiàn)給變量定義增加了兩個大將,。聲明的變量,塊作用域,不重復聲明覆蓋,限制了變量的作用域,保證變量不會去污染全局變量,所以盡量將改為用。 一直使用var定義變量,ES6的出現(xiàn)給變量定義增加了兩個大將let,const。那它們有什么區(qū)別呢。 1、const關鍵字它的作用就是定義一個常量,一旦定義無法更改,不能重復聲明覆蓋; showImg(https://segmen...
摘要:函數(shù)節(jié)流背景中的函數(shù)大多數(shù)情況下都是由用戶主動調用觸發(fā)的除非是函數(shù)本身的實現(xiàn)不合理否則一般不會遇到跟性能相關的問題但在少數(shù)情況下函數(shù)的觸發(fā)不是由用戶直接控制的在這些場景下函數(shù)可能被非常頻繁調用而造成大的性能問題場景事件事件滾動事件共同的特征 函數(shù)節(jié)流 背景 javascript中的函數(shù)大多數(shù)情況下都是由用戶主動調用觸發(fā)的, 除非是函數(shù)本身的實現(xiàn)不合理, 否則一般不會遇到跟性能相關的問題...
摘要:是這樣描述的函數(shù)中可能會有表達式,這會使函數(shù)暫停執(zhí)行,等待表達式中的解析完成后繼續(xù)執(zhí)行函數(shù)并返回解決結果。返回值返回對象的處理結果。當執(zhí)行到時,這個任務會被放入到回調隊列中,等待調用棧有空閑時事件循環(huán)再來取走它。 原文地址:https://lvdingjin.github.io/tech/2018/05/27/async-and-await.html 故事要從一道今日頭條的筆試題說起...
閱讀 3027·2021-10-14 09:42
閱讀 3812·2021-08-11 11:19
閱讀 3616·2019-08-30 13:57
閱讀 3218·2019-08-30 13:49
閱讀 1613·2019-08-29 18:38
閱讀 964·2019-08-29 13:16
閱讀 1912·2019-08-26 13:25
閱讀 3296·2019-08-26 13:24