在JavaScript中察藐,Date對象用來表示日期和時間皮璧。
要獲取系統(tǒng)當前時間,用:
var now = new Date();
now; // Thu Jan 12 2017 16:33:22 GMT+0800 (CST)
now.getFullYear(); // 2017, 年份
now.getMonth(); // 0, 月份分飞,注意月份范圍是0~11,0表示一月
now.getDate(); // 12, 表示12號
now.getDay(); // 4, 表示星期四
now.getHours(); // 16, 24小時制
now.getMinutes(); // 33, 分鐘
now.getSeconds(); // 22, 秒
now.getMilliseconds(); // 875, 毫秒
now.getTime(); // 1435146562875, 以number形式表示的時間戳
注意悴务,當前時間是從瀏覽器本機操作系統(tǒng)獲取的時間,所以不一定準備譬猫,因為用戶可以把當前時間設定為任何值讯檐。
如果要創(chuàng)建一個指定日期和時間的Date對象,可以用:
var d = new Date(2015, 5, 19, 20, 15, 30, 123);
d; // Fri Jun 19 2015 20:15:30 GMT+0800 (CST)
你可能觀察到了一個非常非橙痉坑爹的地方别洪,就是JavaScript的月份范圍用整數(shù)表示是0~11,0表示一月柳刮,1表示二月……蕉拢,所以要表示6月,我們傳入的是5诚亚!這絕對是JavaScript的設計者當時腦抽了一下晕换,但是現(xiàn)在要修復已經(jīng)不可能了。
第二種創(chuàng)建一個指定日期和時間的方法是解析一個符合[ISO 8601]格式的字符串:
var d = Date.parse('2015-06-24T19:49:22.875+08:00');
d; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)
</br>
時區(qū)
Date對象表示的時間總是按瀏覽器所在時區(qū)顯示的站宗,不過我們既可以顯示本地時間闸准,也可以顯示調(diào)整后的UTC時間:
var d = new Date(1435146562875);
d.toLocaleString(); // '2015/6/24 下午7:49:22',本地時間(北京時區(qū)+8:00)梢灭,顯示的字符串與操作系統(tǒng)設定的格式有關
d.toUTCString(); // 'Wed, 24 Jun 2015 11:49:22 GMT'夷家,UTC時間,與本地時間相差8小時
那么在JavaScript中如何進行時區(qū)轉換呢敏释?實際上库快,只要我們傳遞的是一個number類型的時間戳,我們就不用關心時區(qū)轉換钥顽。任何瀏覽器都可以把一個時間戳正確轉換為本地時間义屏。
時間戳是個什么東西?時間戳是一個自增的整數(shù),它表示從1970年1月1日零時整的GMT時區(qū)開始的那一刻闽铐,到現(xiàn)在的毫秒數(shù)蝶怔。假設瀏覽器所在的電腦時間的時間是準確的,那么世界上無論哪個時區(qū)的電腦兄墅,它們此刻產(chǎn)生的時間戳數(shù)字都是一樣的踢星,所以,時間戳可以精確地表示一個時刻隙咸,并且與時區(qū)無關沐悦。
所以,我們只需要傳遞時間戳五督,或者把時間戳從數(shù)據(jù)庫里讀出來藏否,再讓JavaScript自動轉換為當?shù)貢r間就可以了。
要獲取當前時間戳概荷,可以用:
if (Date.now) {
alert(Date.now()); // 老版本IE沒有now()方法
} else {
alert(new Date().getTime());
}
前幾章在廖雪峰老師的網(wǎng)站上看的有點暈暈乎乎的秕岛,這一張終于看得懂了。要過一陣子再反過來看一下高階函數(shù)部分的误证。
傳送門:廖雪峰的官方網(wǎng)站