方式界说: getTime() 方式可返回距 1970 年 1 月 1 日之间的毫秒数。
通常我们盘算时间差都是通过获取两个时间数据,然后划分使用getTime()方式返回与牢固的1970 年 1 月 1 日的时间差,通过对返回毫秒数的差,换算成时间单米,得出两个时间的时间差。
首先你会有一串初始的时间数据,然后通过 new Date(你的时间数据),将你的数据转成Date工具的形式。
var t1="2017/08/28 04:56:38"; //数据 var dateBegin = new Date(t1);//转化为Date工具的形式 //Mon Aug 28 2017 04:56:38 GMT+0800 (中国标准时间) 这里就是Date工具的数据形式
这里的话就要注重一下后端给的时间数据花样的问题,好比下面两种:
由于new Date()方式不能处置第二种数据,以是我们这里需要将第二种数据花样转化为第一种数据的花样。
let t1="2017-05-12 00:13:53"; let dateBegin = new Date(d1.replace(/-/g, "/"));//replace方式将-转为/
另一个时间数据:
既然是时间差的话,就一定要有两个数据,否则怎么两相对照,一样平常两个数据中都会有一个当前时间的数据。
let dateEnd = new Date();//当前时间数据
先获取之间的毫秒差,通过毫秒差换算出你所需要的时间单米,然后时间单米之间的换算凭据的是他们的倍数关系。
function timeFn(d1) {//di作为一个变量传进来 //若是时间花样是准确的,那下面这一步转化时间花样就可以不用了 let dateBegin = new Date(d1.replace(/-/g, "/"));//将-转化为/,使用new Date let dateEnd = new Date();//获取当前时间 let dateDiff = dateEnd.getTime() - dateBegin.getTime();//时间差的毫秒数 let dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000));//盘算出相差天数 let leave1=dateDiff%(24*3600*1000) //盘算天数后剩余的毫秒数 let hours=Math.floor(leave1/(3600*1000))//盘算出小时数 //盘算相差分钟数 let leave2=leave1%(3600*1000) //盘算小时数后剩余的毫秒数 let minutes=Math.floor(leave2/(60*1000))//盘算相差分钟数 //盘算相差秒数 let leave3=leave2%(60*1000) //盘算分钟数后剩余的毫秒数 let seconds=Math.round(leave3/1000) console.log(" 相差 "+dayDiff+"天 "+hours+"小时 "+minutes+" 分钟"+seconds+" 秒") console.log(dateDiff+"时间差的毫秒数",dayDiff+"盘算出相差天数",leave1+"盘算天数后剩余的毫秒数" ,hours+"盘算出小时数",minutes+"盘算相差分钟数",seconds+"盘算相差秒数"); } let t3="2017-08-18 04:56:38"; timeFn(t3);
//这里的dayDiff就是上文盘算出的天数差 let monthDiff=Math.floor(dayDiff/30);//以30天为一个月不够精准严谨 //获取相差的月份 if (monthDiff<12){ timeThis=monthDiff+"个月前公布";//获取相差的月份 return } let yearDiff=Math.floor(monthDiff/12);//获取相差的年份 if(yearDiff>=1){ timeThis=yearDiff+"年前公布"; return }
当天数相差较大的时刻,单纯盘算天数已经不能知足需求了,由于我们PM说的统一以30天为一个月的分界线,然后这里月份的盘算情形感受很庞大的样子没有继续研究下去。
获取当前月份的天数 function getDays() { //组织当前日期工具 var date = new Date(); var year = date.getFullYear();//获取年份 var mouth = date.getMonth() + 1;//获取当前月份 var days;//界说当月的天数; if (mouth == 2) {//当月份为二月时,凭据闰年还是非闰年判断天数 days = year % 4 == 0 ? 29 : 28; } else if (mouth == 1 || mouth == 3 || mouth == 5 || mouth == 7 || mouth == 8 || mouth == 10 || mouth == 12) { //月份为:1,3,5,7,8,10,12 时,为大月.则天数为31; days = 31; } else { //其他月份,天数为:30. days = 30; } return days; }
1.阿里云: 本站现在使用的是阿里云主机,平安/可靠/稳固。点击领取2000米代金券、领会最新阿里云产物的种种优惠流动点击进入
2.腾讯云: 提供云服务器、云数据库、云存储、视频与CDN、域名等服务。腾讯云各种产物的最新流动,优惠券领取点击进入
3.广告同盟: 整理了现在主流的广告同盟平台,若是你有流量,可以作为参考选择适合你的平台点击进入
链接: http://www.fly63.com/article/detial/5269