一、前言
平常我们使用时间对象 大部分都是使用moment时间库 对于js中时间对象并不是很了解 这里做一个总结
在了解js中的时间对象 还要了解一个东西时区 因为时间各地存在不同时间 比如说美国那边是白天 我们这边是晚上
所以这里使用了时区**的概念
目前全世界有几百个时区 在中国有北京时区 上海时区 香港时区 等。
UTC: Universal Time Coordinated,协调世界时。
格林尼治标准时(GMT)
格林尼治标准时间(Greenwich Mean Time,GMT)是指位于伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。 理论上来说,格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时的时间。由于地球在它的椭圆轨道里的运动速度不均匀,这个时刻可能和实际的太阳时相差16分钟。 地球每天的自转是有些不规则的,而且正在缓慢减速。所以,格林尼治时间已经不再被作为标准时间使用。现在的标准时间——协调世界时(UTC)——由原子钟提供。 自1924年2月5日开始,格林尼治天文台每隔一小时会向全世界发放调时信息。而UTC是基于标准的GMT提供的准确时间。
GMT(Greenwich Mean Time)——格林尼治标准时间,格林尼治标准时间是19 世纪中叶大英帝国的基准时间,同时也是事实上的世界基准时间。当时主要为了1840 年之后的铁路系统服务。它以格林尼治天文台的经线为0 度经线,将世界分为24 个时区,除了在特定时期受到仇外心理、民族主义和某些反英心绪的影响之外,它的地位一直未曾动摇。
GMT和UTC的区别
GMT 手表就是可以显示两个或两个以上时区时间的手表。无论用什么方式,显示多个时区最直接的方法就是在一个表壳里装多枚机芯。不过最经济也最常见的方法还是附加一个带有12 小时或24 小时时标刻度的旋转表圈。旋转表圈的使用方法很简单,将表圈上对应第二时区时间的数字对齐表盘的时针即可,如果表盘时间是伦敦时间,那么将表圈顺时针转动一小时,指示的就是欧洲大陆时间,逆时针转动八小时,则是美国西海岸时间。 将表盘时间设定为家乡时间还是目的地时间取决于使用者的偏好,但由于12 小时手
北京时间与格林尼治时间或UTC时间相差8个时区,北京、上海、重庆位于东8区,所以北京时间2013-1-1 0:00:00,转换为UTC时间为:Tue Jan 1 00:00:00 UTC+0800 2013,时间过了8小时。
二、定义时间对象的4种方法
字符串方式
<script>
var date02 = new Date(2019,5,20,13,20,12)
console.log(date02)
//Thu Jun 20 2019 13:20:12 GMT+0800 (中国标准时间)
</script>
时间戳方式
<script>
var date = new Date('2019-10-20')
var date03 = new Date(date);
console.log(date03)
//Sun Oct 20 2019 08:00:00 GMT+0800 (中国标准时间)
</script>
逗号分隔方式
<script>
var date02 = new Date(2019,5,20,13,20,12)
console.log(date02)
//Thu Jun 20 2019 13:20:12 GMT+0800 (中国标准时间)
</script>
不穿任何参数
<script>
var date04 = new Date()
console.log(date04,'date04')
//Sun Aug 18 2019 11:24:11 GMT+0800 (中国标准时间) "date04"
</script>
3、获取时间对象常用的API方法
<script>
var date = new Date();
date.getFullYear()
//2019 获取年份
date.getMonth()
// 7 获取月份 月份是从0开始的 所以0表示一月 1表示2月 这里的7表示8月 使用的时候可以定义一个映射表
date.getDate()
//18 获取几号
date.getDay()
//0 获取星期几 星期这里0表示星期日 1表示星期1 2表示星期2 使用的时候可以定义一个映射表
date.getHours()
//11 获取小时
date.getMinutes()
//20 获取分钟
date.getSeconds()
//42 获取秒
date.getMilliseconds()
//803 获取毫秒
</script>
4、获取时间对象常用的API方法
<!-- 设置是set 获取是get -->
<script>
var date = new Date();
date.setFullYear(2018)
date.setMonth(8)
date.setDate(18)
date.setDay(4)
date.setHours(18)
date.setMinutes()
date.setSeconds()
date.setMilliseconds()
</script>
5、获取时间对象毫秒数
<script>
var d = new Date()
d.valueOf()
//1566100037807
d.getTime()
//1566100037807
</script>