JavaScript 中的日期和時(shí)間及表示標(biāo)準(zhǔn)介紹
前言
本篇的介紹涵蓋以下部分:
1. 時(shí)間標(biāo)準(zhǔn)指的是什么?UCT和GMT 的概念、關(guān)聯(lián)和區(qū)別?
2. 時(shí)間表示標(biāo)準(zhǔn)有哪些?
3. JS 中時(shí)間的處理
日期時(shí)間標(biāo)準(zhǔn)
日期的標(biāo)準(zhǔn)就不多說(shuō)了 -- 公元紀(jì)年
時(shí)間標(biāo)準(zhǔn)其實(shí)挺多的。
原子時(shí) · 協(xié)調(diào)世界時(shí)(UTC) · 格林尼治平時(shí)(GMT) · 地球時(shí)(TT) · 力學(xué)時(shí)(DT)
在程序開(kāi)發(fā)中甚至日常生活中,比較常見(jiàn)的就是UTC和GMT了。
GMT(Greenwich Mean Time)是格林尼治平時(shí):
由于地球軌道并非圓形,其運(yùn)行速度又隨著地球與太陽(yáng)的距離改變而出現(xiàn)變化,因此視太陽(yáng)時(shí)欠缺均勻性。視太陽(yáng)日的長(zhǎng)度同時(shí)亦受到地球自轉(zhuǎn)軸相對(duì)軌道面的傾斜度所影響。為著要糾正上述的不均勻性,天文學(xué)家計(jì)算地球非圓形軌跡與極軸傾斜對(duì)視太陽(yáng)時(shí)的效應(yīng)。平太陽(yáng)時(shí)就是指經(jīng)修訂后的視太陽(yáng)時(shí)。在格林尼治子午線上的平太陽(yáng)時(shí)稱(chēng)為世界時(shí)(UT0),又叫格林尼治平時(shí)(GMT)。
為了確保協(xié)調(diào)世界時(shí)與世界時(shí)(UT1)相差不會(huì)超過(guò)0.9秒,有需要時(shí)便會(huì)在協(xié)調(diào)世界時(shí)內(nèi)加上正或負(fù)閏秒。因此協(xié)調(diào)世界時(shí)與國(guó)際原子時(shí)(TAI)之間會(huì)出現(xiàn)若干整數(shù)秒的差別。位于巴黎的國(guó)際地球自轉(zhuǎn)事務(wù)中央局(IERS)負(fù)責(zé)決定何時(shí)加入閏秒。
兩者的關(guān)系:
UTC = GMT +/- 0.9 s
因此 UTC 間中需要進(jìn)行 "閏秒" 以控制兩者相差。
以上介紹可以統(tǒng)統(tǒng)不看, 一言之,UTC和 GMT就是世界標(biāo)準(zhǔn)時(shí)間, 兩者的差距很小。
日期時(shí)間表示標(biāo)準(zhǔn)
日期和時(shí)間的計(jì)算標(biāo)準(zhǔn)有了。但是表示上卻也可以千差萬(wàn)異。
2013/08/16
08/16/2013
13/08/16
.。。。。。
于是,國(guó)際標(biāo)準(zhǔn)化組織ISO 出來(lái)了,制定了一個(gè)8601系列 《數(shù)據(jù)存儲(chǔ)和交換形式·信息交換·日期和時(shí)間的表示方法》。
目前是第三版ISO8601:2004以替代第一版ISO8601:1988與第二版ISO8601:2000。
主要的部分列一下:
1. 日期表示法
年為4位數(shù),月為2位數(shù),月中的日為2位數(shù),例如,日期(2013年8月16日)可表示為2013-08-16,或20130816。
2. 日歷星期和日表示法
可以用2位數(shù)表示本年內(nèi)第幾個(gè)日歷星期;
每個(gè)日歷星期從星期一開(kāi)始,星期日為第7天
3. 時(shí)間表示方法
小時(shí)、分和秒都用2位數(shù)表示,對(duì)UTC時(shí)間最后加一個(gè)大寫(xiě)字母Z,其他時(shí)區(qū)用實(shí)際時(shí)間加時(shí)差表示。如UTC時(shí)間下午2點(diǎn)30分5秒表示為14:30:05Z或143005Z,當(dāng)時(shí)的北京時(shí)間表示為22:30:05+08:00或223005+0800,也可以簡(jiǎn)化成223005+08。
4. 日期和時(shí)間組合表示法
合并表示時(shí),要在時(shí)間前面加一大寫(xiě)字母T,如要表示北京時(shí)間2004年5月3日下午5點(diǎn)30分8秒,可以寫(xiě)成2004-05-03T17:30:08+08:00或20040503T173008+08。
需要特別提出來(lái)說(shuō)的是:
星期天在西方是作為一個(gè)星期的第一天
在中國(guó)則是最后一天。
也就是所ISO標(biāo)準(zhǔn)和中國(guó)的習(xí)慣是一致的。但是目前許多軟件、語(yǔ)言什么的都是國(guó)外開(kāi)發(fā)的,時(shí)間上還是延續(xù)了他們自己的習(xí)慣。
Javascript 中的日期時(shí)間
方法 | 描述 | FF | IE |
---|---|---|---|
Date() | 返回當(dāng)日的日期和時(shí)間。 | 1 | 3 |
getDate() | 從 Date 對(duì)象返回一個(gè)月中的某一天 (1 ~ 31)。 | 1 | 3 |
getDay() | 從 Date 對(duì)象返回一周中的某一天 (0 ~ 6)。 | 1 | 3 |
getMonth() | 從 Date 對(duì)象返回月份 (0 ~ 11)。 | 1 | 3 |
getFullYear() | 從 Date 對(duì)象以四位數(shù)字返回年份。 | 1 | 4 |
getYear() | 請(qǐng)使用 getFullYear() 方法代替。 | 1 | 3 |
getHours() | 返回 Date 對(duì)象的小時(shí) (0 ~ 23)。 | 1 | 3 |
getMinutes() | 返回 Date 對(duì)象的分鐘 (0 ~ 59)。 | 1 | 3 |
getSeconds() | 返回 Date 對(duì)象的秒數(shù) (0 ~ 59)。 | 1 | 3 |
getMilliseconds() | 返回 Date 對(duì)象的毫秒(0 ~ 999)。 | 1 | 4 |
getTime() | 返回 1970 年 1 月 1 日至今的毫秒數(shù)。 | 1 | 3 |
getTimezoneOffset() | 返回本地時(shí)間與格林威治標(biāo)準(zhǔn)時(shí)間 (GMT) 的分鐘差。 | 1 | 3 |
getUTCDate() | 根據(jù)世界時(shí)從 Date 對(duì)象返回月中的一天 (1 ~ 31)。 | 1 | 4 |
getUTCDay() | 根據(jù)世界時(shí)從 Date 對(duì)象返回周中的一天 (0 ~ 6)。 | 1 | 4 |
getUTCMonth() | 根據(jù)世界時(shí)從 Date 對(duì)象返回月份 (0 ~ 11)。 | 1 | 4 |
getUTCFullYear() | 根據(jù)世界時(shí)從 Date 對(duì)象返回四位數(shù)的年份。 | 1 | 4 |
getUTCHours() | 根據(jù)世界時(shí)返回 Date 對(duì)象的小時(shí) (0 ~ 23)。 | 1 | 4 |
getUTCMinutes() | 根據(jù)世界時(shí)返回 Date 對(duì)象的分鐘 (0 ~ 59)。 | 1 | 4 |
getUTCSeconds() | 根據(jù)世界時(shí)返回 Date 對(duì)象的秒鐘 (0 ~ 59)。 | 1 | 4 |
getUTCMilliseconds() | 根據(jù)世界時(shí)返回 Date 對(duì)象的毫秒(0 ~ 999)。 | 1 | 4 |
parse() | 返回1970年1月1日午夜到指定日期(字符串)的毫秒數(shù)。 | 1 | 3 |
setDate() | 設(shè)置 Date 對(duì)象中月的某一天 (1 ~ 31)。 | 1 | 3 |
setMonth() | 設(shè)置 Date 對(duì)象中月份 (0 ~ 11)。 | 1 | 3 |
setFullYear() | 設(shè)置 Date 對(duì)象中的年份(四位數(shù)字)。 | 1 | 4 |
setYear() | 請(qǐng)使用 setFullYear() 方法代替。 | 1 | 3 |
setHours() | 設(shè)置 Date 對(duì)象中的小時(shí) (0 ~ 23)。 | 1 | 3 |
setMinutes() | 設(shè)置 Date 對(duì)象中的分鐘 (0 ~ 59)。 | 1 | 3 |
setSeconds() | 設(shè)置 Date 對(duì)象中的秒鐘 (0 ~ 59)。 | 1 | 3 |
setMilliseconds() | 設(shè)置 Date 對(duì)象中的毫秒 (0 ~ 999)。 | 1 | 4 |
setTime() | 以毫秒設(shè)置 Date 對(duì)象。 | 1 | 3 |
setUTCDate() | 根據(jù)世界時(shí)設(shè)置 Date 對(duì)象中月份的一天 (1 ~ 31)。 | 1 | 4 |
setUTCMonth() | 根據(jù)世界時(shí)設(shè)置 Date 對(duì)象中的月份 (0 ~ 11)。 | 1 | 4 |
setUTCFullYear() | 根據(jù)世界時(shí)設(shè)置 Date 對(duì)象中的年份(四位數(shù)字)。 | 1 | 4 |
setUTCHours() | 根據(jù)世界時(shí)設(shè)置 Date 對(duì)象中的小時(shí) (0 ~ 23)。 | 1 | 4 |
setUTCMinutes() | 根據(jù)世界時(shí)設(shè)置 Date 對(duì)象中的分鐘 (0 ~ 59)。 | 1 | 4 |
setUTCSeconds() | 根據(jù)世界時(shí)設(shè)置 Date 對(duì)象中的秒鐘 (0 ~ 59)。 | 1 | 4 |
setUTCMilliseconds() | 根據(jù)世界時(shí)設(shè)置 Date 對(duì)象中的毫秒 (0 ~ 999)。 | 1 | 4 |
toSource() | 返回該對(duì)象的源代碼。 | 1 | - |
toString() | 把 Date 對(duì)象轉(zhuǎn)換為字符串。 | 1 | 4 |
toTimeString() | 把 Date 對(duì)象的時(shí)間部分轉(zhuǎn)換為字符串。 | 1 | 4 |
toDateString() | 把 Date 對(duì)象的日期部分轉(zhuǎn)換為字符串。 | 1 | 4 |
toGMTString() | 請(qǐng)使用 toUTCString() 方法代替。 | 1 | 3 |
toUTCString() | 根據(jù)世界時(shí),把 Date 對(duì)象轉(zhuǎn)換為字符串。 | 1 | 4 |
toLocaleString() | 根據(jù)本地時(shí)間格式,把 Date 對(duì)象轉(zhuǎn)換為字符串。 | 1 | 3 |
toLocaleTimeString() | 根據(jù)本地時(shí)間格式,把 Date 對(duì)象的時(shí)間部分轉(zhuǎn)換為字符串。 | 1 | 3 |
toLocaleDateString() | 根據(jù)本地時(shí)間格式,把 Date 對(duì)象的日期部分轉(zhuǎn)換為字符串。 | 1 | 3 |
UTC() | 根據(jù)世界時(shí)返回 1997 年 1 月 1 日 到指定日期的毫秒數(shù)。 | 1 | 3 |
valueOf() | 返回 Date 對(duì)象的原始值。 |
以上也可以統(tǒng)統(tǒng)不看, 需要特別說(shuō)的是:
Javascript 把 星期天 作為一周的開(kāi)始。 使用getDay() 這個(gè)方法時(shí)就得小心了。
getDay() 返回 0-6 之間的數(shù)值, 2013/08/18 是星期天, 返回值是 0
<!--Add by oscar999-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Author" CONTENT="oscar999">
<script>
var date = new Date("2013/08/18");
alert(date.getDay());
</script>
</HEAD>
<BODY>
</BODY>
</HTML>
相關(guān)文章
javascript學(xué)習(xí)筆記(十四) window對(duì)象使用介紹
javascript學(xué)習(xí)筆記之window對(duì)象使用介紹,需要的朋友可以參考下2012-06-06javascript定義變量時(shí)加var與不加var的區(qū)別
這篇文章主要介紹了javascript 變量中 var 與不加var的區(qū)別,需要的朋友可以參考下2014-12-12淺談javascript中關(guān)于日期和時(shí)間的基礎(chǔ)知識(shí)
下面小編就為大家?guī)?lái)一篇淺談javascript中關(guān)于日期和時(shí)間的基礎(chǔ)知識(shí)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07Javascript學(xué)習(xí)筆記之 對(duì)象篇(三) : hasOwnProperty
判斷一個(gè)屬性是定義在對(duì)象本身而不是繼承自原型鏈,我們需要使用從 Object.prototype 繼承而來(lái)的 hasOwnProperty 方法。 hasOwnProperty 方法是 Javascript 中唯一一個(gè)處理對(duì)象屬性而不會(huì)往上遍歷原型鏈的。2014-06-06JavaScript中join()方法的使用簡(jiǎn)介
這篇文章主要介紹了JavaScript中join()方法的使用簡(jiǎn)介,是JS入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-06-06Javascript 按位與賦值運(yùn)算符 (&=)使用介紹
這篇文章主要介紹了Javascript 按位與賦值運(yùn)算符 (&=)的相關(guān)資料,需要的朋友可以參考下2014-02-02關(guān)于JavaScript的URL.createObjectURL()的使用方法
這篇文章主要介紹了關(guān)于URL.createObjectURL()的使用方法,使用createObjectURL可以節(jié)省性能并更快速,只不過(guò)需要在不使用的情況下手動(dòng)釋放內(nèi)存,還不清楚的朋友一起來(lái)看看吧2023-04-04