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毫秒;
什么是时间戳?格林威治时间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>
在 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 向下取整
<script> x=Math.floor(3.22); y=Math.floor(3.62); document.write(x+"<br/>"+y);//都是3 </script>
更多建议: