JS操作時(shí)間 - UNIX時(shí)間戳的簡(jiǎn)單介紹(必看篇)
準(zhǔn)備知識(shí)
GMT(Greenwich Mean Time) - 格林尼治時(shí)間。UTC(Universal Time Code) - 國(guó)際協(xié)調(diào)時(shí)間。PST(Pacific Standard Time,太平洋標(biāo)準(zhǔn)時(shí)間)。
UTC出現(xiàn)的比GMT時(shí)間晚,可以認(rèn)為UTC時(shí)間更加精確,不過(guò)它們之間只相差幾秒鐘。
UTC開(kāi)始時(shí)間為:1970-01-01T00:00:00.000Z(這種時(shí)間設(shè)置可以一直精確到毫秒,字母T和Z僅僅是一種格式)
UNIX時(shí)間戳指的是從1970-01-01T00:00:00.000Z到現(xiàn)在的毫秒數(shù)。(1s=1000ms)
本文需要用到的時(shí)間規(guī)定如下:
機(jī)器時(shí)間 - UNIX時(shí)間戳。(mTime)
人類(lèi)時(shí)間 - 人類(lèi)可讀的各種時(shí)間。(hTime)
標(biāo)準(zhǔn)字符串時(shí)間 - 1970-01-01T00:00:00.000Z(stdStrTime)
GMT時(shí)間 - Tue, 15 Aug 2017 13:58:23 GMT(gmtTime)
需求描述
我們?nèi)粘I钪幸硎緯r(shí)間,方法非常之多,打在屏幕上就是各種字符串,另外我們還要考慮到外國(guó)人表示時(shí)間的方法。比如下面這些都可以表示某個(gè)時(shí)間:
2017年8月15日20:51:22
2017.08.15
2017-08-15 AM
6/13/2004
January 12, 2004
Tue May 25 2004 00:00:00 GMT-0700
1970-01-01T00:00:00.000Z
那么問(wèn)題來(lái)了,上面這些時(shí)間表示方法格式完全不統(tǒng)一,如果我設(shè)計(jì)個(gè)程序要求某些東西在指定時(shí)間運(yùn)行,我們?cè)撛趺幢硎具@個(gè)時(shí)間呢?在計(jì)算機(jī)編程中我們一般用一種最標(biāo)準(zhǔn)的時(shí)間表示方式:UNIX時(shí)間戳。這種時(shí)間表示方法精確到毫秒,表示方法唯一,非常適合編程處理。
核心函數(shù)
new Date()
參數(shù)可以是機(jī)器時(shí)間,參數(shù)為空時(shí)表示把當(dāng)前機(jī)器時(shí)間傳入。返回值是標(biāo)準(zhǔn)字符串時(shí)間。
// 參數(shù)為空時(shí) var stdStrTime = new Date(); console.log(stdStrTime); // output: 2017-08-15T14:22:08.385Z var gmtTime = stdStrTime.toUTCString(); console.log(gmtTime); // output: Tue, 15 Aug 2017 14:22:08 GMT // 參數(shù)不為空時(shí) var stdStrTime = new Date(1502769188084); console.log(stdStrTime); // output: 2017-08-15T03:53:08.084Z var gmtTime = stdStrTime.toUTCString(); console.log(gmtTime); // output: Tue, 15 Aug 2017 03:53:08 GMT
轉(zhuǎn)成GMT時(shí)間也可以用函數(shù)toGMTString(),該方法現(xiàn)在已經(jīng)不推薦使用。
Date.parse()
參數(shù)為標(biāo)準(zhǔn)字符串時(shí)間,返回值是對(duì)應(yīng)的機(jī)器時(shí)間。
var stdStrTime = "2017-08-15T03:53:08.084Z"; var mTime = Date.parse(stdStrTime); console.log(mTime); // output: 1502769188084
2個(gè)問(wèn)題
在JS中操作時(shí)間,和在其它語(yǔ)言中操作時(shí)間原理上相似,核心就是解決2個(gè)問(wèn)題:
把機(jī)器時(shí)間轉(zhuǎn)成人類(lèi)時(shí)間
把人類(lèi)時(shí)間轉(zhuǎn)成機(jī)器時(shí)間
得到當(dāng)前機(jī)器時(shí)間
console.log(Date.now()); // ouput: 1502802483928
得到當(dāng)前人類(lèi)時(shí)間
var stdStrTime = new Date(); console.log(now);
上面的代碼在Chrome環(huán)境中輸出雷氏與這樣:Tue Aug 15 2017 21:09:46 GMT+0800 (China Standard Time)。在Node.js環(huán)境中輸出類(lèi)似與這樣:2017-08-15T13:06:34.806Z
給出標(biāo)準(zhǔn)字符串時(shí)間轉(zhuǎn)成機(jī)器時(shí)間
var stdStrTime = "2004-05-25T00:00:00.000Z"; var mTime = Date.parse(humanTime); console.log(machineTime); // output: 1085443200000
給出機(jī)器時(shí)間轉(zhuǎn)成標(biāo)準(zhǔn)字符串時(shí)間
var mTime = 1085443200000; var stdStrTime = new Date(mTime); console.log(stdStrTime); // output: 2004-05-25T00:00:00.000Z
參考書(shū)籍
JavaScript高級(jí)程序設(shè)計(jì)第三版
以上這篇JS操作時(shí)間 - UNIX時(shí)間戳的簡(jiǎn)單介紹(必看篇)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- vue.js將unix時(shí)間戳轉(zhuǎn)換為自定義時(shí)間格式
- JavaScript輸出當(dāng)前時(shí)間Unix時(shí)間戳的方法
- js時(shí)間戳與日期格式之間相互轉(zhuǎn)換
- javascript時(shí)間戳和日期字符串相互轉(zhuǎn)換代碼(超簡(jiǎn)單)
- 利用 filter 機(jī)制給靜態(tài)資源 url 加上時(shí)間戳,來(lái)防止js和css文件的緩存問(wèn)題
- JS獲取時(shí)間的相關(guān)函數(shù)及時(shí)間戳與時(shí)間日期之間的轉(zhuǎn)換
- JS根據(jù)Unix時(shí)間戳顯示發(fā)布時(shí)間是多久前【項(xiàng)目實(shí)測(cè)】
相關(guān)文章
基于HTML5+JS實(shí)現(xiàn)本地圖片裁剪并上傳功能
這篇文章主要為大家詳細(xì)介紹了HTML5本地圖片裁剪并上傳的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
詳解js中構(gòu)造流程圖的核心技術(shù)JsPlumb
這篇文章主要介紹了js中構(gòu)造流程圖的核心技術(shù)JsPlumb,jsPlumb是一個(gè)強(qiáng)大的JavaScript連線庫(kù),它可以將html中的元素用箭頭、曲線、直線等連接起來(lái),適用于開(kāi)發(fā)Web上的圖表、建模工具等,需要的朋友可以參考下2015-12-12
不使用XMLHttpRequest實(shí)現(xiàn)異步加載 Iframe和script
運(yùn)用Iframe和script可以實(shí)現(xiàn)簡(jiǎn)單的異步加載,沒(méi)有使用XMLHttpRequest,需要的朋友可以參考下2012-10-10
JavaScript排序算法動(dòng)畫(huà)演示效果的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇JavaScript排序算法動(dòng)畫(huà)演示效果的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10
使用ECharts實(shí)現(xiàn)狀態(tài)區(qū)間圖
這篇文章主要為大家詳細(xì)介紹了使用ECharts實(shí)現(xiàn)狀態(tài)區(qū)間圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10
利用Three.js實(shí)現(xiàn)3D三棱錐立體特效
Three.js是基于原生WebGL封裝運(yùn)行的三維引擎,在所有WebGL引擎中,Three.js是國(guó)內(nèi)文資料最多、使用最廣泛的三維引擎。本文將用Three.js實(shí)現(xiàn)3D三棱錐立體特效,感興趣的可以了解一下2022-06-06
javascript實(shí)現(xiàn)表格信息增添與刪除
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)表格信息增添與刪除,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04

