JavaScript 日期对象

2021-05-06 12:03:07 更新

B站关联视频教程:https://www.bilibili.com/video/BV1RA41137yd?p=14

目录:

一、Date 对象

计算获得当前的 年-月-日 时:分:秒

二、五种方法获得当前的时间戳(推荐getTime())

三、如何获得指定时间的时间戳(五种方法,推荐getTime())  

四、获得 10 位数的时间戳

在 JavaScript 中,通过时间对象转换得到的时间戳都是 13 位的,但有时候我们也需要精确到秒的 10 位时间戳,比如微信支付用的就是 10 位的时间戳。要在 JavaScript 获得 10 位的时间戳,大致思路有两个,要么截取前 10 位,要么除以 1000。

五、时间戳转字符串,字符串转时间戳

六、计算当前时间(a)距离指定时间(b) 的时间差


内容:

时间展示的2种标准方式:

1、年-月-日 时:分:秒   如:2032-08-10 8:31:32

2、整数的一串数字【时间戳】如:1975710692000

一、Date 对象

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毫秒;

二、五种方法获得当前的时间戳

什么是时间戳?格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数

在 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>

四、获得 10 位数的时间戳

在 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>

六、计算当前时间(a)距离指定时间(b) 的时间差

思路分析: 

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 向下取整

<script>
    x=Math.floor(3.22);
    y=Math.floor(3.62);
    document.write(x+"<br/>"+y);//都是3
</script>