1.计算当前时间或指定时间的几小时、几天、几周、几个月、几年前或后
/* *计算当前时间或指定时间的几小时、几天、几周、几个月、几年前或后 *date为object或string类型,栗子:new Date()或"2017-08-04 10:30:09" *num为number类型,表示几小时、几天、几周、几个月、几年 *style为"+"(表示之后)或"-"(表示之前) *junit为"hour","day","week","month","year" */ function timeAddSubtract(date,num,style,junit){ var datems,jmsec,dd,year,month,day,hour,minute,second; if(typeof(date)=='object'){ datems = Date.parse(date); }else if(typeof(date)=='string'){ datems = Date.parse(date.replace(/-/g, "/")); }; if(junit == "month"){ if(style == "+"){ dd = new Date(datems); dd = new Date(dd.setMonth(dd.getMonth() + num)); }else if(style == "-"){ dd = new Date(datems); dd = new Date(dd.setMonth(dd.getMonth() - num)); } }else if(junit == "year"){ if(style == "+"){ dd = new Date(datems); dd = new Date(dd.setFullYear(dd.getFullYear() + num)); }else if(style == "-"){ dd = new Date(datems); dd = new Date(dd.setFullYear(dd.getFullYear() - num)); } }else{ if(junit == "hour"){ jmsec = 1000*60*60*num; }else if(junit == "day"){ jmsec = 1000*60*60*24*num; }else if(junit == "week"){ jmsec = 1000*60*60*24*7*num; }; if(style == "+"){ dd = new Date(datems + jmsec); }else if(style == "-"){ dd = new Date(datems - jmsec); }; }; year = dd.getFullYear(); month = (dd.getMonth()+1) < 10 ? "0" + (dd.getMonth()+1) : (dd.getMonth()+1); day = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate(); hour = dd.getHours() < 10 ? "0" + dd.getHours() : dd.getHours(); minute = dd.getMinutes() < 10 ? "0" + dd.getMinutes() : dd.getMinutes(); second = dd.getSeconds() < 10 ? "0" + dd.getSeconds() : dd.getSeconds(); result = year+"-"+month+"-"+day+" "+hour+":"+minute+":"+second; console.log(result) return result; }; //使用栗子如下: console.log("传入当前系统时间使用new Date()") console.log("传入时间:") timeAddSubtract("2017-08-04 10:30:09",0,"+","hour") console.log("3小时后:") timeAddSubtract("2017-08-04 10:30:09",3,"+","hour") console.log("3天后:") timeAddSubtract("2017-08-04 10:30:09",3,"+","day") console.log("3周后:") timeAddSubtract("2017-08-04 10:30:09",3,"+","week") console.log("3个月后:") timeAddSubtract("2017-08-04 10:30:09",3,"+","month") console.log("3年后:") timeAddSubtract("2017-08-04 10:30:09",3,"+","year")
2.计算两个时间的差值
function timeDiff(stime,etime){ var startTime,endTime,tDiffMs,days,hours,minutes,seconds,leave1,leave2,leave3; startTime = new Date(Date.parse(new Date(stime.replace(/-/g, "/")))); endTime = new Date(Date.parse(new Date(etime.replace(/-/g, "/")))); tDiffMs = endTime.getTime() - startTime.getTime();//时间差的毫秒数 //计算出相差天数 days = Math.floor(tDiffMs/(24*3600*1000)); //计算出小时数 leave1 = tDiffMs%(24*3600*1000);//计算天数后剩余的毫秒数 hours = Math.floor(leave1/(3600*1000)); //计算相差分钟数 leave2 = leave1%(3600*1000);//计算小时数后剩余的毫秒数 minutes = Math.floor(leave2/(60*1000)); //计算相差秒数 leave3 = leave2%(60*1000);//计算分钟数后剩余的毫秒数 seconds = Math.round(leave3/1000); //return days; console.log("相差 "+days+"天 "+hours+"小时 "+minutes+" 分钟"+seconds+" 秒") }; timeDiff("2017-07-31 11:30:09","2017-08-04 10:35:12")
3.ios系统中js的new Date的格式问题
前端时间做一个web app,发现使用new Date('2017-01-01');这样的写法在ios系统中返回的是NaN,查阅相关资料后发现ios不支持这用日期格式,把"-"改为"/"就能够返回正常的值了。new Date('2017/01/01');也可以直接替换new Date(Date.parse(date.replace(/-/g, "/")));
4.获取某个月份的天数
在使用其他语言获取每月天数的时候,一般都是存储到一个数组中进行获取,但是如果是二月份的话就需要首先判断是否闰年,再确定是28还是29了。
js可以通过Date对象很方便的获取到每月的天数(无需再麻烦的区分闰年),在初始化Date对象时,我们可以通过这种方式
var d = new Date(2015,2,0); console.log(d.getDate());
以上代码可以在控制台输出2015年2月份的天数;Date对象月份从0开始,即0表示1月份,以此类推;在上面的代码中,我们初始化d为三月份的第0天,由于JavaScript中day的范围为1~31中的值,所以当设为0时,会向前 一天,也即表示上个月的最后一天。
有朋自远方来...评论一下呗O(∩_∩)O