一、前言

    平常我们使用时间对象 大部分都是使用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 小时手

    1. 北京时间与格林尼治时间或UTC时间相差8个时区,北京、上海、重庆位于东8区,所以北京时间2013-1-1 0:00:00,转换为UTC时间为:Tue Jan 1 00:00:00 UTC+0800 2013,时间过了8小时。

    二、定义时间对象的4种方法
    字符串方式

    1. <script>
    2. var date02 = new Date(2019,5,20,13,20,12)
    3. console.log(date02)
    4. //Thu Jun 20 2019 13:20:12 GMT+0800 (中国标准时间)
    5. </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>