标准对象之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

浙公网安备 33010602011771号