这是about页面中用到的一个js程序,可以根据一个起始日期计算距离当前的差值,精确到毫秒。
程序本体:由一个dateMaker
获取数据函数和一个time_valide
日期格式化函数组成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| function dateMaker(id) { var dom = document.querySelector('#'+id); var interval_time = dom.getAttribute('interval-time') !== null ? parseInt(dom.getAttribute('interval-time')) : 1000; var plus_time = 0; var plus_time_attr = dom.getAttribute('plus-time'); var plus_time_arr = /^(\d+,)+\d+$/.test(plus_time_attr) ? plus_time_attr.split(',') : false; if(plus_time_arr) { plus_time_arr.forEach(function(v, k) { plus_time += parseInt(v); }); } else if(/^\d+$/.test(plus_time_attr)) { plus_time = parseInt(plus_time_attr); } var sTime = new Date(dom.getAttribute('start-time')).getTime(); var timer = setInterval(function() { var now = new Date(); t = time_valide(sTime - plus_time, now.getTime()); var years = t.y > 0 ? t.y + '年' : ''; var months = t.m > 0 ? t.m + '个月' : t.y > 0 ? '1个月' : ''; var days = t.d > 0 ? t.d + '天' : t.y > 0 ? '1天' : ''; var hours = t.h; if(hours < 10) hours = '0' + hours; hours += '个小时'; var mins = t.i; if(mins < 10) mins = '0' + mins; mins += '分钟'; var secs = t.s; if(secs < 10) secs = '0' + secs; secs += '秒'; var msecs = now.getMilliseconds(); if(msecs < 10) { msecs = '00' + msecs + '毫秒'; } else if(msecs >= 10 && msecs < 100) { msecs = '0' + msecs + '毫秒'; } else { msecs += '毫秒'; } dom.innerHTML = years + months + days + hours + mins + secs + msecs; }, interval_time); }
function time_valide(starttime, endtime) { var timediff = endtime / 1000 - starttime / 1000; var years = parseInt(timediff / 31536000); var remain = timediff % 31536000; var months = parseInt(remain / 2592000); remain %= 2592000; var days = parseInt(remain/86400); remain = remain%86400; var hours = parseInt(remain/3600); remain = remain%3600; var mins = parseInt(remain/60); remain = remain%60; var secs = parseInt(remain%60); return { y: years, m: months, d: days, h: hours, i: mins, s: secs } }
|
使用时引入dateMaker.js,使用dateMaker
并传入一个ID
1
| <span id="date" plus-time="23241600000" start-time="2018/10/16 07:00:00" interval-time="50"></span>
|
支持几个属性
- plus-time:额外增加的时间,单位毫秒,比如我统计工作时间,我是从2018年10月到现在在工作,并且2015年也工作了9个多月,所以我这里写“23241600000”,也就是额外增加的时间,可以添加多个,用英文逗号隔开
- start-time:这个不用多说,就是开始时间,年月日格式必须用斜杠“yyyy/mm/dd”,不能用减号“yyyy-mm-dd”,否则苹果手机的浏览器可能不兼容,包括苹果手机的QQ、微信内置浏览器
- interval-time:这是计时器的间隔时间,单位毫秒,每过多长时间运行一次,如果时间精确到秒的话写1000就OK,精确到毫秒的话得有那种飞快跑动的感觉,所以这里是50
最后会在这个span
标签内生成“X年X个月X天XX个小时XX分钟XX秒XXX毫秒”