JS操作時間 - UNIX時間戳的簡單介紹(必看篇)
準(zhǔn)備知識
GMT(Greenwich Mean Time) - 格林尼治時間。UTC(Universal Time Code) - 國際協(xié)調(diào)時間。PST(Pacific Standard Time,太平洋標(biāo)準(zhǔn)時間)。
UTC出現(xiàn)的比GMT時間晚,可以認(rèn)為UTC時間更加精確,不過它們之間只相差幾秒鐘。
UTC開始時間為:1970-01-01T00:00:00.000Z(這種時間設(shè)置可以一直精確到毫秒,字母T和Z僅僅是一種格式)
UNIX時間戳指的是從1970-01-01T00:00:00.000Z到現(xiàn)在的毫秒數(shù)。(1s=1000ms)
本文需要用到的時間規(guī)定如下:
機(jī)器時間 - UNIX時間戳。(mTime)
人類時間 - 人類可讀的各種時間。(hTime)
標(biāo)準(zhǔn)字符串時間 - 1970-01-01T00:00:00.000Z(stdStrTime)
GMT時間 - Tue, 15 Aug 2017 13:58:23 GMT(gmtTime)
需求描述
我們?nèi)粘I钪幸硎緯r間,方法非常之多,打在屏幕上就是各種字符串,另外我們還要考慮到外國人表示時間的方法。比如下面這些都可以表示某個時間:
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
那么問題來了,上面這些時間表示方法格式完全不統(tǒng)一,如果我設(shè)計個程序要求某些東西在指定時間運(yùn)行,我們該怎么表示這個時間呢?在計算機(jī)編程中我們一般用一種最標(biāo)準(zhǔn)的時間表示方式:UNIX時間戳。這種時間表示方法精確到毫秒,表示方法唯一,非常適合編程處理。
核心函數(shù)
new Date()
參數(shù)可以是機(jī)器時間,參數(shù)為空時表示把當(dāng)前機(jī)器時間傳入。返回值是標(biāo)準(zhǔn)字符串時間。
// 參數(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ù)不為空時 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ù)toGMTString(),該方法現(xiàn)在已經(jīng)不推薦使用。
Date.parse()
參數(shù)為標(biāo)準(zhǔn)字符串時間,返回值是對應(yīng)的機(jī)器時間。
var stdStrTime = "2017-08-15T03:53:08.084Z"; var mTime = Date.parse(stdStrTime); console.log(mTime); // output: 1502769188084
2個問題
在JS中操作時間,和在其它語言中操作時間原理上相似,核心就是解決2個問題:
把機(jī)器時間轉(zhuǎn)成人類時間
把人類時間轉(zhuǎn)成機(jī)器時間
得到當(dāng)前機(jī)器時間
console.log(Date.now()); // ouput: 1502802483928
得到當(dāng)前人類時間
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)境中輸出類似與這樣:2017-08-15T13:06:34.806Z
給出標(biāo)準(zhǔn)字符串時間轉(zhuǎn)成機(jī)器時間
var stdStrTime = "2004-05-25T00:00:00.000Z"; var mTime = Date.parse(humanTime); console.log(machineTime); // output: 1085443200000
給出機(jī)器時間轉(zhuǎn)成標(biāo)準(zhǔn)字符串時間
var mTime = 1085443200000; var stdStrTime = new Date(mTime); console.log(stdStrTime); // output: 2004-05-25T00:00:00.000Z
參考書籍
JavaScript高級程序設(shè)計第三版
以上這篇JS操作時間 - UNIX時間戳的簡單介紹(必看篇)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Javascript和Java獲取各種form表單信息的簡單實例
本篇文章主要是對Javascript和Java獲取各種form表單信息的簡單實例進(jìn)行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-02-02