javascript關(guān)于“時間”的一次探索-創(chuàng)新互聯(lián)

原文對 ISO 8601 時間格式中 T 和 Z 的表述有一些錯誤,我已經(jīng)對原文進行了一些修訂,抱歉給大家造成誤解。

創(chuàng)新互聯(lián)長期為千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為武昌企業(yè)提供專業(yè)的網(wǎng)站設(shè)計、成都做網(wǎng)站武昌網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

最近使用 sequelize 過程中發(fā)現(xiàn)一個“奇怪”的問題,將某個時間插入到表中后,通過 sequelize 查詢出來的時間和通過 mysql 命令行工具查詢出來的時間不一樣。非常困惑,于是研究了下,下面是學(xué)習(xí)成果。

基本概念


我們先來介紹一些可能當年在地理課上學(xué)習(xí)過的基本概念。

說起來,時間真是一個神奇的東西。以前人們通過觀察太陽的位置來決定時間(比如:使用日晷),這就使得不同經(jīng)緯度的地區(qū)時間是不一樣的。后來人們進一步規(guī)定以子午線為中心,向東西兩側(cè)延伸,每 15 度劃分一個時區(qū),剛好是 24 個時區(qū)。然后因為一天有 24 小時,地球自轉(zhuǎn)一圈是 360 度,360 度 / 24 小時 = 15 度/小時,所以每差一個時區(qū),時間就差一個小時。

最開始的標準時間(子午線中心處的時間)是英國倫敦的皇家格林威治天文臺的標準時間(因為它剛好在本初子午線經(jīng)過的地方),這就是我們常說的 GMT(Greenwich Mean Time)。然后其他各個時區(qū)根據(jù)標準時間確定自己的時間,往東的時區(qū)時間晚(表示為 GMT+hh:mm)、往西的時區(qū)時間早(表示為 GMT-hh:mm)。比如,中國標準時間是東八區(qū),我們的時間就總是比 GMT 時間晚 8 小時,他們在凌晨 1 點,我們已經(jīng)是早晨 9 點了。

但是 GMT 其實是根據(jù)地球自轉(zhuǎn)、公轉(zhuǎn)計算的(太陽每天經(jīng)過英國倫敦皇家格林威治天文臺的時間為中午 12 點),不是非常準確,于是后面提出了根據(jù)原子鐘計算的標準時間 UTC(Coordinated Universal Time)。

一般情況下,GMT 和 UTC 可以互換,但是實際上,GMT 是一個時區(qū),而 UTC 是一個時間標準。

可以在這里看到所有的時區(qū):https://www.timeanddate.com/time/map/

所以,當我們“展示”某個時間時,明確時區(qū)就變得非常重要了。不然你只說現(xiàn)在是 2016-01-11 19:30:00,然后不告訴我時區(qū),我其實是沒法準確知道時間的(當然,我可以認為這個時間是我所在時區(qū)的當?shù)貢r間)。如果你說現(xiàn)在是 2016-01-11 19:30:00 GMT+0800,那我就知道這個時間是東八區(qū)的時間了。如果我在東八區(qū),那時間就是 19:30,如果我在 GMT 時區(qū),那時間就是 11:30(減掉 8 小時)。

JavaScript 中的“時間”


我們現(xiàn)在來介紹下 JavaScript 中的“時間”,包括:Date、Date.parse、Date.UTC、Date.now。

注:下面的代碼示例可以在 node shell 里面運行,如果你運行的時候結(jié)果和下面的不一致,那可能咱們不在一個時區(qū):)

Date 構(gòu)造器


構(gòu)造時間的方法有下面幾種:

new Date();   // 當前時間
new Date(value);  // 自 1970-01-01 00:00:00 UTC 經(jīng)過的毫秒數(shù)
new Date(dateString); // 時間字符串
new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]);

當前題目:javascript關(guān)于“時間”的一次探索-創(chuàng)新互聯(lián)
網(wǎng)站地址:http://www.bm7419.com/article14/dcddde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作做網(wǎng)站、網(wǎng)站內(nèi)鏈網(wǎng)站改版、域名注冊、全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護公司