JS获取年月日时分秒等

目录

创建 Date 对象的语法:

 date方法和描述:

常用的公共方法: 

例1:获取当前日期(格式:yyyy-MM-dd)

例2: 获取当前时间并且格式转化成:“yyyy-MM-dd hh:mm:ss”

例3:获取当前日期的前/后 x 月,可跨年 

例4:得到指定季度的第一天

例5:得到指定季度的最后一天

例6:计算两个日期相差天数

例7:日期验证起期<止期

例8:日期验证并保证起期(月)<止期(月)并且不能超过一年

例9:获取起始月和终止月之间的月数

例10:开始日期和结束日期之间不超过一年。并且结束日期不可晚于当前日期



创建 Date 对象的语法:

var date = new Date();
  •  date方法和描述:

方法描述
Date()返回当日的日期和时间。格式:Thu Jun 20 2019 09:47:47 GMT+0800 (中国标准时间)
getDate()从 Date 对象返回一个月中的某一天 (1 ~ 31)。
getDay()从 Date 对象返回一周中的某一天 (0 ~ 6,0代表星期日)。
getMonth()从 Date 对象返回月份 (0 ~ 11,0代表1月)。
getFullYear()从 Date 对象以四位数字返回年份。
getYear()获取当前年份(2位),请使用 getFullYear() 方法代替。
getHours()返回 Date 对象的小时 (0 ~ 23)。
getMinutes()返回 Date 对象的分钟 (0 ~ 59)。
getSeconds()返回 Date 对象的秒数 (0 ~ 59)。
getMilliseconds()返回 Date 对象的毫秒(0 ~ 999)。
getTime()返回 1970 年 1 月 1 日至今的毫秒数。
getTimezoneOffset()返回本地时间与格林威治标准时间 (GMT) 的分钟差。
getUTCDate()根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。
getUTCDay()根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。
getUTCMonth()根据世界时从 Date 对象返回月份 (0 ~ 11)。
getUTCFullYear()根据世界时从 Date 对象返回四位数的年份。
getUTCHours()根据世界时返回 Date 对象的小时 (0 ~ 23)。
getUTCMinutes()根据世界时返回 Date 对象的分钟 (0 ~ 59)。
getUTCSeconds()根据世界时返回 Date 对象的秒钟 (0 ~ 59)。
getUTCMilliseconds()根据世界时返回 Date 对象的毫秒(0 ~ 999)。
parse()返回1970年1月1日午夜到指定日期(字符串)的毫秒数。
setDate()设置 Date 对象中月的某一天 (1 ~ 31)。
setMonth()设置 Date 对象中月份 (0 ~ 11)。
setFullYear()设置 Date 对象中的年份(四位数字)。
setYear()请使用 setFullYear() 方法代替。
setHours()设置 Date 对象中的小时 (0 ~ 23)。
setMinutes()设置 Date 对象中的分钟 (0 ~ 59)。
setSeconds()设置 Date 对象中的秒钟 (0 ~ 59)。
setMilliseconds()设置 Date 对象中的毫秒 (0 ~ 999)。
setTime()以毫秒设置 Date 对象。
setUTCDate()根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。
setUTCMonth()根据世界时设置 Date 对象中的月份 (0 ~ 11)。
setUTCFullYear()根据世界时设置 Date 对象中的年份(四位数字)。
setUTCHours()根据世界时设置 Date 对象中的小时 (0 ~ 23)。
setUTCMinutes()根据世界时设置 Date 对象中的分钟 (0 ~ 59)。
setUTCSeconds()根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。
setUTCMilliseconds()根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。
toSource()返回该对象的源代码。
toString()把 Date 对象转换为字符串。
toTimeString()把 Date 对象的时间部分转换为字符串。
toDateString()把 Date 对象的日期部分转换为字符串。
toGMTString()请使用 toUTCString() 方法代替。
toUTCString()根据世界时,把 Date 对象转换为字符串。
toLocaleString()根据本地时间格式,把 Date 对象转换为字符串。
toLocaleTimeString()根据本地时间格式,把 Date 对象的时间部分转换为字符串。
toLocaleDateString()根据本地时间格式,把 Date 对象的日期部分转换为字符串。
UTC()根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数。
valueOf()返回 Date 对象的原始值。

常用的公共方法: 

例1:获取当前日期(格式:yyyy-MM-dd)

//得到当前日期
function getNowDate(obj) {
	var d = new Date();//创建 Date 对象的语法
	var vYear = d.getFullYear();//获得当前年(4位数)
	var vMon = d.getMonth() + 1;//获得当前月(月份默认计算是从0开始,0-11代表1-12月,加1比较直观些)
	var vDay = d.getDate();//获得当前日(1-31)
        //拼接成完整日期,格式如:2019-06-17
	var nowDate=vYear + "-" + (vMon < 10 ? "0" + vMon : vMon) + "-" + (vDay < 10 ? "0" + vDay : vDay);
        //返回完整日期
	obj.value = nowDate;
}

例2: 获取当前时间并且格式转化成:“yyyy-MM-dd hh:mm:ss”

// 对Date的扩展,将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符, 
// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) 
// 例子: 
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 
// (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18 
Date.prototype.Format = function (fmt) {
    var o = {
        "M+": this.getMonth() + 1, //月份 
        "d+": this.getDate(), //日 
        "H+": this.getHours(), //小时 
        "m+": this.getMinutes(), //分 
        "s+": this.getSeconds(), //秒 
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度 
        "S": this.getMilliseconds() //毫秒 
    };
    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
    if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
}

//调用: 
var time1 = new Date().Format("yyyy-MM-dd");
var time2 = new Date().Format("yyyy-MM-dd HH:mm:ss");

例3:获取当前日期的前/后 x 月,可跨年 

// 获得当前日期前(后)X月的月初(末),
//(x 为正数,则是后x月;x为负数,则是前x月; x范围没限制,即可跨年)
//(flag取值:'F' 月初 , 'L' 月末)
function getXMonthFirstOrLastDate(obj,x,flag) {
	   var d = new Date();
	   var vYear = d.getFullYear();//获得当前年
	   var vMon = d.getMonth() + 1;//获得当前月(1-12)
	    	
	   var mod = vMon+x<=0 ? Math.abs(parseInt((vMon+x)/12))+1 : parseInt((vMon+x)/12);
	   if( (vMon+x >0) && ((vMon+x)%12)==0){
	    mod = mod-1;
	   }
	   vYear = vMon+x<=0 ? vYear-mod : vYear+mod;
	   vMon = vMon+x<=0 ? vMon+x+mod*12 : vMon+x-mod*12;	
	   var firstDate = new Date(vYear,vMon,1); 
	   var vday;
	   if(flag=="F"){
	    	 vday = "01"; 
	   }else if(flag=="L"){
	    	 vday = new Date(firstDate.getTime()-1000*60*60*24).getDate();
	   }
	   var theDate = vYear + "-" +(vMon < 10 ? "0" + vMon : vMon) + "-" + vday;
	   obj.value = theDate;
}

例4:得到指定季度的第一天

//得到指定季度的第一天
function getMarkQuarterFirstDate(objv) {
	var reg=/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;
	var r = objv.match(reg);
	if(r==null)return false; 
	var d=new Date(r[1], r[3]-1,r[4]);
	
	var vYear = d.getFullYear();
	var vMonth = d.getMonth() + 1;
	var quarter = Math.ceil(vMonth/3); 
	var vday = "01";
	var theDate;
	if(quarter=="1"){
		theDate = vYear+"-01" + "-" + vday;
	}else if(quarter=="2"){
		theDate = vYear + "-04" + "-" + vday;
	}else if(quarter=="3"){
		theDate = vYear + "-07" + "-" + vday;
	}else{
		theDate = vYear + "-10" + "-" + vday;
	}
	return theDate;
}

例5:得到指定季度的最后一天

//得到指定季度的最后一天
function getMarkQuarterLastDate(objv) {
	var reg=/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;
	var r = objv.match(reg);
	if(r==null)return false; 
	var d=new Date(r[1], r[3]-1,r[4]);
	
	var vYear = d.getFullYear();
	var vMonth = d.getMonth() + 1;
	var quarter = Math.ceil(vMonth/3); 
	var theDate;
	if(quarter=="1"){
		theDate = vYear+"-03-31";
	}else if(quarter=="2"){
		theDate = vYear + "-06-30";
	}else if(quarter=="3"){
		theDate = vYear + "-09-30";
	}else{
		theDate = vYear + "-12-31";
	}
	return theDate;
}

例6:计算两个日期相差天数

//计算两个日期相差天数
function GetDateDiff(startDate,endDate) 
{ 
var startTime = new Date(Date.parse(startDate.replace(/-/g, "/"))).getTime(); 
var endTime = new Date(Date.parse(endDate.replace(/-/g, "/"))).getTime(); 
var dates = Math.abs((startTime - endTime))/(1000*60*60*24); 
return dates; 
} 

例7:日期验证起期<止期

// 日期验证并保证起期<止期
function  checkBegindateAndEnddate(begindate,enddate){
	if(begindate!="" && enddate!=""){
		var reg=/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;
		var r = begindate.match(reg);
			if(r==null)return false; 
		var d1=new Date(r[1], r[3]-1,r[4]);
			
		var r1= enddate.match(reg); 
		var d2=new Date(r1[1], r1[3]-1,r1[4]);
		if(d1>d2){
			alert("起期必须小于或等于止期");
			return false;
		}
	}
	return true;
}

例8:日期验证并保证起期(月)<止期(月)并且不能超过一年

//日期验证并保证起期(月)<止期(月)并且不能超过一年
function  checkBegindateAndEnddateOnlyOneYear(begindateObj,enddateObj,beginName,endName){

	if(begindateObj.value==""||begindateObj.value==null||begindateObj.value=="false"){
        alert("["+beginName+"]不能为空!");
        return false;
    }
    if(enddateObj.value==""||enddateObj.value==null||enddateObj.value=="false"){
        alert("["+endName+"]不能为空!");
        return false;
    }
	if(begindateObj.value!="" && enddateObj.value!=""){
		var reg=/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;
		var s = begindateObj.value+"-01";
		var r = s.match(reg);
			if(r==null)return false;
		var d1=new Date(r[1], r[3]-1,r[4]);
			
		var d = enddateObj.value+"-01";
		var r1= d.match(reg); 
			if(r1==null)return false; 
		var d2=new Date(r1[1], r1[3]-1,r1[4]);
		var alltime=d2.getTime()-d1.getTime(); 
		var days=parseInt(alltime/(1000 * 60 * 60 * 24));
		if(days<0){
			alert(beginName+"必须小于或等于"+endName+"!");
			return false;
		}else if(days>340){
			alert(beginName+"与"+endName+"之间不能超过一年!");
			return false;
		}
	}
	return true;
}

 

例9:获取起始月和终止月之间的月数

        //获取起始月和终止月之间的月数,start是传入的开始日期,end传入的结束日期 格式:2019-07-24
        function getMonthNum(start,end){
        	var result = [];  //建立数组,将取到的月份放入数组返回
		    var s = start.split("-");  //取到年和月
		    var e = end.split("-");  
		    var min = new Date();  
		    var max = new Date();  
		    min.setFullYear(s[0],s[1]); //将开始日期年月放入min
		    max.setFullYear(e[0],e[1]); //将结束日期年月放入max
		    var curr = min;  //定义变量 = 开始日期的年月
		    while(curr <= max){  //遍历,当开始日期小于等于结束日期的时候执行
		        var month = curr.getMonth();  //得到开始日期的月份
		        //month=month==0?12:month;
		        var str="月份:";
		        if(month=="0"){//因为月份是0-11,代表1-12月,在这里0相当于12月份
		            str+="12";
		        }else{
		        	str+=month;
		        }
		        result.push(str);  //放入数组
		        curr.setMonth(month+1);//执行完一次,给开始日期加 1 个月
		    }  
		    return result; //返回取到开始日期和结束日期之间的月份
        }

例10:开始日期和结束日期之间不超过一年。并且结束日期不可晚于当前日期

    //开始日期和结束日期之间不超过一年。并且结束日期不可晚于当前日期
    function getDateInOneYear(begindate,enddate,beginName,endName){
    	if(begindate.value!="" && enddate.value!=""){
    		//获取当前日期
    		var date = new Date();
    		var vYear  = date.getFullYear()//当前年
		var vMon  = date.getMonth()+1;//当前月
		var vDay  = date.getDate();//今天
                //当前日期为 年月日的拼接,加0是为了和传入的日期格式统一。
		var nowDate = vYear + "-" + (vMon < 10 ? "0" + vMon : vMon) + "-" + (vDay < 10 ? "0" + vDay : vDay);
			
                //转换成相同格式,将年月日之间‘-’转为了‘/’
		var nTime = new Date(nowDate.replace(new RegExp("-", "g"), "/"));
	    	var bTime = new Date(begindate.value.replace(new RegExp("-", "g"), "/"));
	    	var eTime = new Date(enddate.value.replace(new RegExp("-", "g"), "/"));
	    	//取开始日期和结束日期之间的天数。先获取毫秒值再计算。
	    	var days = parseInt((eTime.getTime()-bTime.getTime())/1000/60/60/24);
	    	//取当前日期和结束日期之间的天数。
	    	var td = parseInt((nTime.getTime()-eTime.getTime())/1000/60/60/24);
	    	if(td<0){
	    		alert("结束日期不可晚于当前日期");
	    		return false;
	    	}
	    	if(days<0){
			alert(endName+"不能小于"+beginName+"!");
			return false;
		}else if(days>365){
			alert(beginName+"与"+endName+"之间不能超过一年!");
			return false;
		}
    	}
		return true;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值