在JavaScript中,Date对象用来表示日期和时间。
要获取系统当前的时间:
var now = new Date();
alert(now);
now;//Mon Oct 23 2017 11:21:04 GMT+0800 (中国标准时间)
now.getFullYear();//2017,年份
now.getMonth();//9,月份,注意月份范围是0~11,9表示10月
now.getDate();//23,表示23号
now.getDay();//1,表示星期一
now.getHours();//19,24小时制
now.getMinutes();//49,分
now.getSeconds();//22,秒
now.getMilliseconds();//875,毫秒数
now.getTime();//1435146562875,以number形式表示的时间戳
当前时间是浏览器从本机操作系统获取的时间,所以不一定准确,因为用户可把当前时间设定为任何值。
如果要创建一个指定日期和时间的Date对象,可以用:
var d = new Data(2015,5,19,20,15,30,123);
d;//Fri Jun 19 2015 20:15:30 GMT+0800 (CST)
但是它返回的不是Date对象,而是一个时间戳,不过有时间戳就可以和容易把它转换成一个Date:
var d = new Date(1435146562875);
d; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)
时区
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());
}