Date日期對象
Date日期對象
在JavaScript中,Date對象用來表示日期和時間。
要獲取系統(tǒng)當前時間,用:
var now = new Date(); now; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST) now.getFullYear(); // 2015, 年份 now.getMonth(); // 5, 月份,注意月份范圍是0~11,5表示六月 now.getDate(); // 24, 表示24號 now.getDay(); // 3, 表示星期三 now.getHours(); // 19, 24小時制 now.getMinutes(); // 49, 分鐘 now.getSeconds(); // 22, 秒 now.getMilliseconds(); // 875, 毫秒數(shù) 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; // 1435146562875
但它返回的不是Date對象,而是一個時間戳。不過有時間戳就可以很容易地把它轉(zhuǎn)換為一個Date:
var d = new Date(1435146562875); d; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)
<html> <body> <script type="text/javascript"> var d=new Date(); document.write("從 1970/01/01 至今已過去 " + d.getTime() + " 毫秒"); </script> </body> </html>
時區(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ū)轉(zhuǎn)換呢?實際上,只要我們傳遞的是一個number類型的時間戳,我們就不用關心時區(qū)轉(zhuǎn)換。任何瀏覽器都可以把一個時間戳正確轉(zhuǎn)換為本地時間。
時間戳是個什么東西?時間戳是一個自增的整數(shù),它表示從1970年1月1日零時整的GMT時區(qū)開始的那一刻,到現(xiàn)在的毫秒數(shù)。假設瀏覽器所在電腦的時間是準確的,那么世界上無論哪個時區(qū)的電腦,它們此刻產(chǎn)生的時間戳數(shù)字都是一樣的,所以,時間戳可以精確地表示一個時刻,并且與時區(qū)無關。
所以,我們只需要傳遞時間戳,或者把時間戳從數(shù)據(jù)庫里讀出來,再讓JavaScript自動轉(zhuǎn)換為當?shù)貢r間就可以了。
要獲取當前時間戳,可以用:
if (Date.now) { alert(Date.now()); // 老版本IE沒有now()方法 } else { alert(new Date().getTime()); }
<html> <body> <script type="text/javascript"> var d=new Date() var weekday=new Array(7) weekday[0]="星期日" weekday[1]="星期一" weekday[2]="星期二" weekday[3]="星期三" weekday[4]="星期四" weekday[5]="星期五" weekday[6]="星期六" document.write("今天是" + weekday[d.getDay()]) </script> </body> </html>