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>


更多建议: