Date日期對象

Date日期物件

在JavaScript中,Date物件用來表示日期和時間。

要取得系統目前時間,用:

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, 毫秒数
now.getTime(); // 1435146562875, 以number形式表示的时间戳

注意,目前時間是瀏覽器從本機作業系統取得的時間,所以不一定準確,因為使用者可以把目前時間設定為任何值。

如果要建立一個指定日期和時間的Date對象,可以用:

var d = new Date(2015, 5, 19, 20, 15, 30, 123);
d; // Fri Jun 19 2015 20:15:30 GMT+0800 (CST)

你可能觀察到了一個非常非常坑爹的地方,就是JavaScript的月份範圍用整數表示是0~ 11,0表示一月,1表示二月…,所以要表示6月,我們傳入的是5!這絕對是JavaScript的設計者當時腦抽了一下,但是現在要修復已經不可能了。

第二種建立一個指定日期和時間的方法是解析一個符合ISO 8601格式的字串:

var d = Date.parse('2015-06-24T19:49:22.875+08:00');
d; // 1435146562875

但它傳回的不是Date對象,而是一個時間戳記。不過有時間戳就可以很容易地把它轉換為一個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>

時區

Date物件表示的時間總是按瀏覽器所在時區顯示的,不過我們既可以顯示本地時間,也可以顯示調整後的UTC時間:

var d = new Date(1435146562875);
d.toLocaleString(); // '2015/6/24 下午7:49:22',本地时间(北京时区+8:00),显示的字符串与操作系统设定的格式有关
d.toUTCString(); // 'Wed, 24 Jun 2015 11:49:22 GMT',UTC时间,与本地时间相差8小时

那麼在JavaScript中如何進行時區轉換呢?實際上,只要我們傳遞的是一個number類型的時間戳,我們就不用關心時區轉換。任何瀏覽器都可以把一個時間戳記正確轉換成本地時間。

時間戳記是什麼東西?時間戳記是一個自增的整數,它表示從1970年1月1日零時整的GMT時區開始的那一刻,到現在的毫秒數。假設瀏覽器所在電腦的時間是準確的,那麼世界上無論哪個時區的電腦,它們此刻產生的時間戳數字都是一樣的,所以,時間戳可以精確地表示一個時刻,並且與時區無關。

所以,我們只要傳遞時間戳,或是把時間戳從資料庫裡讀出來,再讓JavaScript自動轉換成當地時間就可以了。

要取得目前時間戳,可以用:

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>


#
繼續學習
||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script type="text/javascript"> var d = new Date(); document.write(d.toLocaleString()); </script> </head> <body> </body> </html>