标准对象之Date

在JavaScript中,Date对象用来表示日期和时间。

获取系统当前时间,如下:

<script>
'use strict';
var now = new Date(); //Tue Aug 15 2017 12:10:30 GMT+0800 (中国标准时间)
console.log(now);
console.log(now.getFullYear());//年份
console.log(now.getMonth());//月份
console.log(now.getDate());//日
console.log(now.getDay());//星期几
console.log(now.getHours());//小时
console.log(now.getMinutes());//分钟
console.log(now.getSeconds());//秒
console.log(now.getMilliseconds());//毫秒
console.log(now.getTime());//以number形式表示时间戳

</script>

 结果:

这里需要注意一点,当前时间是浏览器从本机操作系统获取的时间,所以不一定准确,因为用户可能把自己的系统时间设置为任何时间。

如果要创建一个指定日志和时间的Date对象,可以用:

<script>
'use strict';
var d = new Date(2017, 7, 15, 14, 3, 30, 200);
console.log(d);
</script>

 

结果:

 

我们在代码中月份的位置写的是7,但是结果却是Aug(8月),这是为啥呢?

这是因为在JavaScript中,月份的范围用整数表示是0~11,0表示1月.....11表示12月,笔者不明白为啥要这么设计。

第二种创建一个指定日期和时间的方法时解析一个符合ISO 8601格式的字符串:

<script>
'use strict';
var d = Date.parse('2017-08-15T15:18:40.100+08:00');
console.log(d);
</script>

 

结果:

1502781520100

但是这样返回的结果不是Date对象,而是一个时间戳。不过有时间戳可以很容易的把它转换成一个Date:

<script>
'use strict';
var d = new Date(1502781520100);
console.log(d);
</script>

 

结果:

Tue Aug 15 2017 15:18:40 GMT+0800 (中国标准时间)

时区

Date对象表示的时间总是按浏览器所在时区显示的,不过我们既可以显示本地时间,也可以显示调整后UTC时间。

<script>
'use strict';
var d = new Date(1502781520100);
console.log(d.toLocaleString());//本地时间
console.log(d.toUTCString());//UTC时间
</script>

结果:

在JavaScript中如何进行时区转换呢?实际上,只要我们传递的是一个number类型的时间戳,我们就不用关心时区转换。任何浏览器都可以把一个时间戳正确转换为本地时间。

时间戳是个什么东西?时间戳是一个自增的整数,它表示从1970年1月1日零时整的GMT时区开始的那一刻,到现在的毫秒数。假设浏览器所在电脑的时间是准确的,那么世界上无论哪个时区的电脑,它们此刻产生的时间戳数字都是一样的,所以,时间戳可以精确地表示一个时刻,并且与时区无关。

所以,我们只需要传递时间戳,或者把时间戳从数据库里读出来,再让JavaScript自动转换为当地时间就可以了。

获取当前的时间戳,可以使用:

<script>
'use strict';
if (Date.now){
  console.log(Date.now()); //由于老版本的IE没有now()方法,所以这里需要一个if判断
} else {
  console.log(new Date().getTime());
}
</script>

 

结果:

1502782564926

 

posted @ 2017-08-15 12:11  ocean_boy  阅读(55)  评论(0)    收藏  举报