常用的时间函数整理
程序员文章站
2022-07-02 16:16:41
这次的项目中,有很多用到了时间函数,报错直接获取本月的开始日期,结束如期。本周的开始时间,结束时间等。这里简单的记录一下,方便下次引用。时间格式大家可以自行修改,例子中都是格式化成为了2019-07-01 15:55:00这样的格式。 2.获取这个月,或者上个月,或者下个月的开始日期和结束日期,大家 ......
这次的项目中,有很多用到了时间函数,报错直接获取本月的开始日期,结束如期。本周的开始时间,结束时间等。这里简单的记录一下,方便下次引用。时间格式大家可以自行修改,例子中都是格式化成为了2019-07-01 15:55:00这样的格式。
- 最常用的一个,就是对js原生new date()的扩展,可以格式成为自己想要的格式。(以下的函数都是需要调用这个的,所以必须要引入这个)
1 /** 2 * 对date的扩展,将 date 转化为指定格式的string 3 * 月(m)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符, 4 * 年(y)可以用 1-4 个占位符,毫秒(s)只能用 1 个占位符(是 1-3 位的数字) 5 * 例子: 6 * (new date()).format("yyyy-mm-dd hh:mm:ss.s") ==> 2006-07-02 08:09:04.423 7 * (new date()).format("yyyy-m-d h:m:s.s") ==> 2006-7-2 8:9:4.18 8 */ 9 date.prototype.format = function (fmt) { //author: meizz 10 var o = { 11 "m+": this.getmonth() + 1, //月份 12 "d+": this.getdate(), //日 13 "h+": this.gethours(), //小时 14 "m+": this.getminutes(), //分 15 "s+": this.getseconds(), //秒 16 "q+": math.floor((this.getmonth() + 3) / 3), //季度 17 "s": this.getmilliseconds() //毫秒 18 }; 19 if (/(y+)/.test(fmt)) fmt = fmt.replace(regexp.$1, (this.getfullyear() + "").substr(4 - regexp.$1.length)); 20 for (var k in o) 21 if (new regexp("(" + k + ")").test(fmt)) fmt = fmt.replace(regexp.$1, (regexp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); 22 return fmt; 23 }
2.获取这个月,或者上个月,或者下个月的开始日期和结束日期,大家简单的修改,就能获取到本月的开始时间和结束时间
1 //获取当月或者上个月数据的开始日期和结束日期 get_date(0):当月的开始和结束 get_date(-1):上个月的开始和结束日期 2 function get_date(addmonth){ 3 var now_date = new date(); 4 var month = now_date.getmonth(); 5 var year = now_date.getfullyear(); 6 var this_yue_begin = new date(new date(year,month,1)).format("yyyy-mm-dd"); 7 var this_yue_end = ""; 8 var set_yue_begin = ""; 9 var set_yue_end = ""; 10 if(addmonth){ 11 if((month+addmonth)>=12){ 12 set_yue_begin = new date(new date(year+1,(month+addmonth-12),1)).format("yyyy-mm-dd"); 13 }else if((month+addmonth)<=0){ 14 set_yue_begin = new date(new date(year-1,11,1)).format("yyyy-mm-dd"); 15 }else{ 16 set_yue_begin = new date(new date(year,month+addmonth,1)).format("yyyy-mm-dd"); 17 } 18 19 if(month+addmonth==11){ 20 set_yue_end = new date(new date(year+1,0,1).gettime()-1000).format("yyyy-mm-dd"); 21 }else{ 22 set_yue_end = new date(new date(year,month+addmonth+1,1).gettime()-1000).format("yyyy-mm-dd"); 23 } 24 return set_yue_begin+" 00:00:00 - "+set_yue_end+" 23:59:59"; 25 }else{ 26 if(month==11){ 27 this_yue_end = new date(new date(year+1,0,1).gettime()-1000).format("yyyy-mm-dd"); 28 }else{ 29 this_yue_end = new date(new date(year,month+1,1).gettime()-1000).format("yyyy-mm-dd"); 30 } 31 return this_yue_begin +" 00:00:00 - "+this_yue_end+" 23:59:59"; 32 } 33 }
3.获取本周的开始时间和结束时间
1 //获取本周的开始和结束时间,里面也是传0是获取本周的时间,传-1是获取上一周的 2 function getweekstartandend(addweekcount) { 3 //起止日期数组 4 var startstop = new array(); 5 //一天的毫秒数 6 var millisecond = 1000 * 60 * 60 * 24; 7 //获取当前时间 8 var currentdate = new date(); 9 //相对于当前日期addweekcount个周的日期 10 currentdate = new date(currentdate.gettime() + (millisecond * 7*addweekcount)); 11 //返回date是一周中的某一天 12 var week = currentdate.getday(); 13 //返回date是一个月中的某一天 14 var month = currentdate.getdate(); 15 //减去的天数 16 var minusday = week != 0 ? week - 1 : 6; 17 //获得当前周的第一天 18 var currentweekfirstday = new date(currentdate.gettime() - (millisecond * minusday)); 19 //获得当前周的最后一天 20 var currentweeklastday = new date(currentweekfirstday.gettime() + (millisecond * 6)); 21 //添加至数组 22 startstop.push(getdatestr3(currentweekfirstday)); 23 startstop.push(getdatestr3(currentweeklastday)); 24 25 return getdatestr3(currentweekfirstday)+" 00:00:00 - "+getdatestr3(currentweeklastday)+" 23:59:59"; 26 } 27 function getdatestr3(date) { 28 var year = ""; 29 var month = ""; 30 var day = ""; 31 var now = date; 32 year = ""+now.getfullyear(); 33 if((now.getmonth()+1)<10){ 34 month = "0"+(now.getmonth()+1); 35 }else{ 36 month = ""+(now.getmonth()+1); 37 } 38 if((now.getdate())<10){ 39 day = "0"+(now.getdate()); 40 }else{ 41 day = ""+(now.getdate()); 42 } 43 return year+"-"+month+"-"+day; 44 }
4.获取最近三十天的时间
1 function get_30_date(){ 2 var now_date = new date().format("yyyy-mm-dd hh:mm:ss"); 3 var ago_30 = new date(new date().gettime()-30*24*60*60*1000).format("yyyy-mm-dd hh:mm:ss"); 4 return ago_30+" - "+now_date; 5 }