JavaScript 日期对象
B站关联视频教程:https://www.bilibili.com/video/BV1RA41137yd?p=14
目录:
计算获得当前的 年-月-日 时:分:秒
二、五种方法获得当前的时间戳(推荐getTime())
三、如何获得指定时间的时间戳(五种方法,推荐getTime())   
在 JavaScript 中,通过时间对象转换得到的时间戳都是 13 位的,但有时候我们也需要精确到秒的 10 位时间戳,比如微信支付用的就是 10 位的时间戳。要在 JavaScript 获得 10 位的时间戳,大致思路有两个,要么截取前 10 位,要么除以 1000。
内容:
时间展示的2种标准方式:
1、年-月-日 时:分:秒 如:2032-08-10 8:31:32
2、整数的一串数字【时间戳】如:1975710692000
Date 对象用于处理日期与时间。
创建 Date 对象:
new Date()
<script> var mydate=new Date(); document.write(mydate.getFullYear()+"<br/>");//年 document.write(mydate.getMonth()+1+"<br/>");//月份 ,getMonth()获得的是存储月份的下标,真实月份要加1 document.write(mydate.getDate()+"<br/>");//日。 document.write(mydate.getHours()+"<br/>"); document.write(mydate.getMinutes()+"<br/>"); document.write(mydate.getSeconds()+"<br/>");//秒 //document.write(mydate.getMilliseconds());// 1秒=1000毫秒 </script>
 1小时=60分;1分钟=60秒;1秒=1000毫秒;
1小时=60分;1分钟=60秒;1秒=1000毫秒;
什么是时间戳?格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
 在 JavaScript 中,通过时间对象转换得到的时间戳都是 13 位的[毫秒级]。
在 JavaScript 中,通过时间对象转换得到的时间戳都是 13 位的[毫秒级]。
<script> var mydate=new Date(); //方法一 精确到毫秒 document.write(mydate.getTime()+"<br/>"); //方法二 精确到毫秒 document.write(mydate.valueOf()+"<br/>"); //方法三 ,精确不到毫秒 var timestamp = Date.parse(new Date()); document.write(timestamp+"<br/>"); //方法四 document.write(Number(new Date())+"<br/>"); //方法五 document.write(+new Date()); </script>
<script> var stringTime = "2032-08-10 8:31:32"; var timestamp=new Date(stringTime).getTime(); document.write(timestamp+"<br/>");//1975710692000 </script>
<script>
// 定义一个时间对象 dt,然后依次演示各种将 dt 转换为时间戳的写法
var dt = new Date("2033-07-01 23:59:59.999");
// 写法一,精确到毫秒,得到 13 位时间戳 1562255999999
console.log(dt.getTime());
// 写法二,精确到毫秒,得到 13 位时间戳 1562255999999
console.log(dt.valueOf());
// 写法三,精确到毫秒,得到 13 位时间戳 1562255999999
console.log(Number(dt));
// 写法四,精确到毫秒,得到 13 位时间戳 1562255999999
console.log(+dt);
// 写法五,精确到秒,得到 13 位时间戳 1562255999000,后三位固定为 000
console.log(Date.parse(dt));
</script>在 JavaScript 中,通过时间对象转换得到的时间戳都是 13 位的,但有时候我们也需要精确到秒的 10 位时间戳,比如微信支付用的就是 10 位的时间戳。要在 JavaScript 获得 10 位的时间戳,大致思路有两个,要么截取前 10 位,要么除以 1000。
<script> // 将 13 位时间戳除以 1000 然后再取整,得到 10 位时间戳数字 var a=parseInt(+new Date()/1000); document.write(a+"<br/>"); // 将 13 位时间戳转换为字符串截取前 10 位,得到 10 位时间戳字符串 var a=(+new Date()).toString().substring(0,10); // 截取第 0~9 位 document.write(a+"<br/>"); var a=(+new Date()).toString().substr(0,10); // 从第 0 位开始截取 10 位 document.write(a+"<br/>"); </script>
在 JavaScript 中,时间戳转时间对象的方法非常简单,直接将一个时间戳做为Date的参数即可,示例如下:
<script> // 注意:参数中的时间戳必须是 13 位的,多一位或少一位都不行 var a=new Date(1975710692000); //document.write(a+"<br/>"); // 将时间戳转换为更加直观形象的本地时间 var a=new Date(1975710692000).toLocaleString(); document.write(a+"<br/>");//2032/8/10 上午8:31:32 </script>
上面的时间不是标准的年-月-日 时:分:秒格式。看下面的转换成标准的时间:
时间戳转字符串:
<script> // 将时间戳转换为更加直观形象的本地时间 var a=new Date(1975710692000); var nian=a.getFullYear(); var yue=a.getMonth()+1; var ri=a.getDate(); var shi=a.getHours(); var fen=a.getMinutes(); var miao=a.getSeconds(); //2032-8-10 8:31:32 document.write(nian+"-"+yue+"-"+ri+" "+shi+":"+fen+":"+miao); </script>
字符串转时间戳:
<script> var stringTime = "2032-08-10 8:31:32"; var timestamp=new Date(stringTime).getTime(); document.write(timestamp+"<br/>");//1975710692000 </script>
思路分析:
1、b-a
2、把时间戳换算成我们的字符串日期格式?
       <script>
      function setDaoJiShi(){
             var mydate=new Date();
             a=mydate.getTime();
             
             b=new Date("2028-05-11 11:55:32").getTime();
        
             //console.log(b);
             c=b-a;//c单位是毫秒
             //console.log(c);
             d=c/1000/(60*60*24);     
             tian=Math.floor(d);
             xiaoshi=Math.floor((c-tian*24*60*60*1000)/1000/(60*60));
             //console.log(xiaoshi);
             
             fenzhong=Math.floor((c-tian*24*60*60*1000-xiaoshi*60*60*1000)/1000/60);
             //console.log(fenzhong);
             
            miao=Math.floor((c-tian*24*60*60*1000-xiaoshi*60*60*1000-fenzhong*60*1000)/1000);
                   
             var shijian=tian+"天"+xiaoshi+"小时"+fenzhong+"分钟"+miao+"秒";
             //console.log(shijian);
             document.write(shijian);
        }
    setDaoJiShi();
    </script>  <div id="showdate"></div>
   <script>
  function setDaoJiShi(){
         var mydate=new Date();
         a=mydate.getTime();
         
         b=new Date("2028-05-11 11:55:32").getTime();
    
         //console.log(b);
         c=b-a;//c单位是毫秒
         //console.log(c);
         d=c/1000/(60*60*24);     
         tian=Math.floor(d);
         xiaoshi=Math.floor((c-tian*24*60*60*1000)/1000/(60*60));
         //console.log(xiaoshi);
         
         fenzhong=Math.floor((c-tian*24*60*60*1000-xiaoshi*60*60*1000)/1000/60);
         //console.log(fenzhong);
         
        miao=Math.floor((c-tian*24*60*60*1000-xiaoshi*60*60*1000-fenzhong*60*1000)/1000);
               
         var shijian=tian+"天"+xiaoshi+"小时"+fenzhong+"分钟"+miao+"秒";
         //console.log(shijian);
         document.getElementById('showdate').innerHTML=shijian;
    }
setDaoJiShi();
</script> Math.floor 向下取整
Math.floor 向下取整
<script> x=Math.floor(3.22); y=Math.floor(3.62); document.write(x+"<br/>"+y);//都是3 </script>
 


更多建议: