当前位置: 移动技术网 > IT编程>开发语言>JavaScript > 常用的时间函数整理

常用的时间函数整理

2019年07月01日  | 移动技术网IT编程  | 我要评论

  这次的项目中,有很多用到了时间函数,报错直接获取本月的开始日期,结束如期。本周的开始时间,结束时间等。这里简单的记录一下,方便下次引用。时间格式大家可以自行修改,例子中都是格式化成为了2019-07-01 15:55:00这样的格式。

  1. 最常用的一个,就是对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         }

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网