本篇的介紹涵蓋以下部分:
1. 時間標準指的是什么?UCT和GMT 的概念、關(guān)聯(lián)和區(qū)別?
2. 時間表示標準有哪些?
3. JS 中時間的處理
日期時間標準
日期的標準就不多說了 -- 公元紀年
是為紀念猶太人耶穌(基督)的誕生。他誕生的那一年為公元1年,誕生之前的年份稱為“公元前n年”
簡單來說,時間的標準就是以什么時間為起點開始計時。對于年份來說,舉例來說,如果不使用公元紀年法,估計全世界交流起來就困難重重了(新中國54年,估計很把很多老外整暈)
時間標準其實挺多的。
原子時 · 協(xié)調(diào)世界時(UTC) · 格林尼治平時(GMT) · 地球時(TT) · 力學時(DT)
在程序開發(fā)中甚至日常生活中,比較常見的就是UTC和GMT了。
UTC是協(xié)調(diào)世界時(Universal Time Coordinated)英文縮寫,是由國際無線電咨詢委員會規(guī)定和推薦,并由國際時間局(BIH)負責保持的以秒為基礎(chǔ)的時間標度。UTC相當于本初子午線(即經(jīng)度0度)上的平均太陽時,過去曾用格林威治平均時(GMT)來表示.北京時間比UTC時間早8小時,以1999年1月1日0000UTC為例,UTC時間是零點,北京時間為1999年1月1日早上8點整。
GMT(Greenwich Mean Time)是格林尼治平時:
由于地球軌道并非圓形,其運行速度又隨著地球與太陽的距離改變而出現(xiàn)變化,因此視太陽時欠缺均勻性。視太陽日的長度同時亦受到地球自轉(zhuǎn)軸相對軌道面的傾斜度所影響。為著要糾正上述的不均勻性,天文學家計算地球非圓形軌跡與極軸傾斜對視太陽時的效應(yīng)。平太陽時就是指經(jīng)修訂后的視太陽時。在格林尼治子午線上的平太陽時稱為世界時(UT0),又叫格林尼治平時(GMT)。
為了確保協(xié)調(diào)世界時與世界時(UT1)相差不會超過0.9秒,有需要時便會在協(xié)調(diào)世界時內(nèi)加上正或負閏秒。因此協(xié)調(diào)世界時與國際原子時(TAI)之間會出現(xiàn)若干整數(shù)秒的差別。位于巴黎的國際地球自轉(zhuǎn)事務(wù)中央局(IERS)負責決定何時加入閏秒。
兩者的關(guān)系:
UTC = GMT +/- 0.9 s
因此 UTC 間中需要進行 "閏秒" 以控制兩者相差。
以上介紹可以統(tǒng)統(tǒng)不看, 一言之,UTC和 GMT就是世界標準時間, 兩者的差距很小。
日期時間表示標準
日期和時間的計算標準有了。但是表示上卻也可以千差萬異。
2013/08/16
08/16/2013
13/08/16
.。。。
于是,國際標準化組織ISO 出來了,制定了一個8601系列 《數(shù)據(jù)存儲和交換形式·信息交換·日期和時間的表示方法》。
目前是第三版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)第幾個日歷星期;
每個日歷星期從星期一開始,星期日為第7天
3. 時間表示方法
小時、分和秒都用2位數(shù)表示,對UTC時間最后加一個大寫字母Z,其他時區(qū)用實際時間加時差表示。如UTC時間下午2點30分5秒表示為14:30:05Z或143005Z,當時的北京時間表示為22:30:05+08:00或223005+0800,也可以簡化成223005+08。
4. 日期和時間組合表示法
合并表示時,要在時間前面加一大寫字母T,如要表示北京時間2004年5月3日下午5點30分8秒,可以寫成2004-05-03T17:30:08+08:00或20040503T173008+08。
需要特別提出來說的是:
星期天在西方是作為一個星期的第一天
在中國則是最后一天。
也就是所ISO標準和中國的習慣是一致的。但是目前許多軟件、語言什么的都是國外開發(fā)的,時間上還是延續(xù)了他們自己的習慣。
Javascript 中的日期時間
方法 | 描述 | FF | IE |
---|---|---|---|
Date() | 返回當日的日期和時間。 | 1 | 3 |
getDate() | 從 Date 對象返回一個月中的某一天 (1 ~ 31)。 | 1 | 3 |
getDay() | 從 Date 對象返回一周中的某一天 (0 ~ 6)。 | 1 | 3 |
getMonth() | 從 Date 對象返回月份 (0 ~ 11)。 | 1 | 3 |
getFullYear() | 從 Date 對象以四位數(shù)字返回年份。 | 1 | 4 |
getYear() | 請使用 getFullYear() 方法代替。 | 1 | 3 |
getHours() | 返回 Date 對象的小時 (0 ~ 23)。 | 1 | 3 |
getMinutes() | 返回 Date 對象的分鐘 (0 ~ 59)。 | 1 | 3 |
getSeconds() | 返回 Date 對象的秒數(shù) (0 ~ 59)。 | 1 | 3 |
getMilliseconds() | 返回 Date 對象的毫秒(0 ~ 999)。 | 1 | 4 |
getTime() | 返回 1970 年 1 月 1 日至今的毫秒數(shù)。 | 1 | 3 |
getTimezoneOffset() | 返回本地時間與格林威治標準時間 (GMT) 的分鐘差。 | 1 | 3 |
getUTCDate() | 根據(jù)世界時從 Date 對象返回月中的一天 (1 ~ 31)。 | 1 | 4 |
getUTCDay() | 根據(jù)世界時從 Date 對象返回周中的一天 (0 ~ 6)。 | 1 | 4 |
getUTCMonth() | 根據(jù)世界時從 Date 對象返回月份 (0 ~ 11)。 | 1 | 4 |
getUTCFullYear() | 根據(jù)世界時從 Date 對象返回四位數(shù)的年份。 | 1 | 4 |
getUTCHours() | 根據(jù)世界時返回 Date 對象的小時 (0 ~ 23)。 | 1 | 4 |
getUTCMinutes() | 根據(jù)世界時返回 Date 對象的分鐘 (0 ~ 59)。 | 1 | 4 |
getUTCSeconds() | 根據(jù)世界時返回 Date 對象的秒鐘 (0 ~ 59)。 | 1 | 4 |
getUTCMilliseconds() | 根據(jù)世界時返回 Date 對象的毫秒(0 ~ 999)。 | 1 | 4 |
parse() | 返回1970年1月1日午夜到指定日期(字符串)的毫秒數(shù)。 | 1 | 3 |
setDate() | 設(shè)置 Date 對象中月的某一天 (1 ~ 31)。 | 1 | 3 |
setMonth() | 設(shè)置 Date 對象中月份 (0 ~ 11)。 | 1 | 3 |
setFullYear() | 設(shè)置 Date 對象中的年份(四位數(shù)字)。 | 1 | 4 |
setYear() | 請使用 setFullYear() 方法代替。 | 1 | 3 |
setHours() | 設(shè)置 Date 對象中的小時 (0 ~ 23)。 | 1 | 3 |
setMinutes() | 設(shè)置 Date 對象中的分鐘 (0 ~ 59)。 | 1 | 3 |
setSeconds() | 設(shè)置 Date 對象中的秒鐘 (0 ~ 59)。 | 1 | 3 |
setMilliseconds() | 設(shè)置 Date 對象中的毫秒 (0 ~ 999)。 | 1 | 4 |
setTime() | 以毫秒設(shè)置 Date 對象。 | 1 | 3 |
setUTCDate() | 根據(jù)世界時設(shè)置 Date 對象中月份的一天 (1 ~ 31)。 | 1 | 4 |
setUTCMonth() | 根據(jù)世界時設(shè)置 Date 對象中的月份 (0 ~ 11)。 | 1 | 4 |
setUTCFullYear() | 根據(jù)世界時設(shè)置 Date 對象中的年份(四位數(shù)字)。 | 1 | 4 |
setUTCHours() | 根據(jù)世界時設(shè)置 Date 對象中的小時 (0 ~ 23)。 | 1 | 4 |
setUTCMinutes() | 根據(jù)世界時設(shè)置 Date 對象中的分鐘 (0 ~ 59)。 | 1 | 4 |
setUTCSeconds() | 根據(jù)世界時設(shè)置 Date 對象中的秒鐘 (0 ~ 59)。 | 1 | 4 |
setUTCMilliseconds() | 根據(jù)世界時設(shè)置 Date 對象中的毫秒 (0 ~ 999)。 | 1 | 4 |
toSource() | 返回該對象的源代碼。 | 1 | - |
toString() | 把 Date 對象轉(zhuǎn)換為字符串。 | 1 | 4 |
toTimeString() | 把 Date 對象的時間部分轉(zhuǎn)換為字符串。 | 1 | 4 |
toDateString() | 把 Date 對象的日期部分轉(zhuǎn)換為字符串。 | 1 | 4 |
toGMTString() | 請使用 toUTCString() 方法代替。 | 1 | 3 |
toUTCString() | 根據(jù)世界時,把 Date 對象轉(zhuǎn)換為字符串。 | 1 | 4 |
toLocaleString() | 根據(jù)本地時間格式,把 Date 對象轉(zhuǎn)換為字符串。 | 1 | 3 |
toLocaleTimeString() | 根據(jù)本地時間格式,把 Date 對象的時間部分轉(zhuǎn)換為字符串。 | 1 | 3 |
toLocaleDateString() | 根據(jù)本地時間格式,把 Date 對象的日期部分轉(zhuǎn)換為字符串。 | 1 | 3 |
UTC() | 根據(jù)世界時返回 1997 年 1 月 1 日 到指定日期的毫秒數(shù)。 | 1 | 3 |
valueOf() | 返回 Date 對象的原始值。 |
Javascript 把 星期天 作為一周的開始。 使用getDay() 這個方法時就得小心了。
getDay() 返回 0-6 之間的數(shù)值, 2013/08/18 是星期天, 返回值是 0
代碼如下:
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com