zoukankan      html  css  js  c++  java
  • Javascript 日期格式化 相关操作

    1.相关扩展函数

    //---------------------------------------------------
    // 判断闰年
    //---------------------------------------------------
    Date.prototype.isLeapYear = function()
    {
    	return (0==this.getYear()%4&&((this.getYear()%100!=0)||(this.getYear()%400==0)));
    };
    
    //---------------------------------------------------
    // 日期格式化
    // 格式 YYYY/yyyy/YY/yy 表示年份
    // MM/M 月份
    // W/w 星期
    // dd/DD/d/D 日期
    // hh/HH/h/H 时间
    // mm/m 分钟
    // ss/SS/s/S 秒
    //---------------------------------------------------
    
    Date.prototype.Format = function(formatStr)
    {
    	var str = formatStr;
    	var Week = ['日','一','二','三','四','五','六'];
    	str=str.replace(/yyyy|YYYY/,this.getFullYear());
    	str=str.replace(/yy|YY/,(this.getYear() % 100)>9?(this.getYear() % 100).toString():'0' + (this.getYear() % 100));
    	str=str.replace(/MM/,(this.getMonth() + 1)>9?(this.getMonth() + 1).toString():'0' + (this.getMonth() + 1));
    	str=str.replace(/M/g,this.getMonth() + 1);
    	str=str.replace(/w|W/g,Week[this.getDay()]);
    	str=str.replace(/dd|DD/,this.getDate()>9?this.getDate().toString():'0' + this.getDate());
    	str=str.replace(/d|D/g,this.getDate());
    	str=str.replace(/hh|HH/,this.getHours()>9?this.getHours().toString():'0' + this.getHours());
    	str=str.replace(/h|H/g,this.getHours());
    	str=str.replace(/mm/,this.getMinutes()>9?this.getMinutes().toString():'0' + this.getMinutes());
    	str=str.replace(/m/g,this.getMinutes());
    	str=str.replace(/ss|SS/,this.getSeconds()>9?this.getSeconds().toString():'0' + this.getSeconds());
    	str=str.replace(/s|S/g,this.getSeconds());
    	return str;
    };
    
    //+---------------------------------------------------
    //| 求两个时间的天数差 日期格式为 YYYY-MM-dd
    //+---------------------------------------------------
    function daysBetween(DateOne,DateTwo)
    {
    	var OneMonth = DateOne.substring(5,DateOne.lastIndexOf('-'));
    	var OneDay = DateOne.substring(DateOne.length,DateOne.lastIndexOf('-')+1);
    	var OneYear = DateOne.substring(0,DateOne.indexOf('-'));
    	var TwoMonth = DateTwo.substring(5,DateTwo.lastIndexOf('-'));
    	var TwoDay = DateTwo.substring(DateTwo.length,DateTwo.lastIndexOf('-')+1);
    	var TwoYear = DateTwo.substring(0,DateTwo.indexOf('-'));
    	var cha=((Date.parse(OneMonth+'/'+OneDay+'/'+OneYear)- Date.parse(TwoMonth+'/'+TwoDay+'/'+TwoYear))/86400000);
    	return Math.abs(cha);
    }
    
    //+---------------------------------------------------
    //| 日期计算
    //+---------------------------------------------------
    Date.prototype.DateAdd = function(strInterval, number) {
    	var dtTmp = this;
    	switch (strInterval) {
    	case 's' :return new Date(Date.parse(dtTmp.toGMTString()) + (1000 * number));
    	case 'n' :return new Date(Date.parse(dtTmp.toGMTString()) + (60000 * number));
    	case 'h' :return new Date(Date.parse(dtTmp.toGMTString()) + (3600000 * number));
    	case 'd' :return new Date(Date.parse(dtTmp.toGMTString()) + (86400000 * number));
    	case 'w' :return new Date(Date.parse(dtTmp.toGMTString()) + ((86400000 * 7) * number));
    	//FIXME 以下两种对跨年的增加有异常
    //	case 'q' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number*3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
    //	case 'm' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
    	case 'y' :return new Date((dtTmp.getFullYear() + number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
    	}
    };
    
    //+---------------------------------------------------
    //| 比较日期差 dtEnd 格式为日期型或者 有效日期格式字符串
    //+---------------------------------------------------
    Date.prototype.DateDiff = function(strInterval, dtEnd) {
    	var dtStart = this;
    	if (typeof dtEnd == 'string' )//如果是字符串转换为日期型
    	{
    	dtEnd = StringToDate(dtEnd);
    	}
    	switch (strInterval) {
    	case 's' :return parseInt((dtEnd - dtStart) / 1000);
    	case 'n' :return parseInt((dtEnd - dtStart) / 60000);
    	case 'h' :return parseInt((dtEnd - dtStart) / 3600000);
    	case 'd' :return parseInt((dtEnd - dtStart) / 86400000);
    	case 'w' :return parseInt((dtEnd - dtStart) / (86400000 * 7));
    	case 'm' :return (dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12) - (dtStart.getMonth()+1);
    	case 'y' :return dtEnd.getFullYear() - dtStart.getFullYear();
    	}
    };
    
    //+---------------------------------------------------
    //| 日期输出字符串,重载了系统的toString方法
    //+---------------------------------------------------
    Date.prototype.toString = function(showWeek)
    {
    	var myDate= this;
    	var str = myDate.toLocaleDateString();
    	if (showWeek)
    	{
    	var Week = ['日','一','二','三','四','五','六'];
    	str += ' 星期' + Week[myDate.getDay()];
    	}
    	return str;
    };

    2.调用格式

    //格式化日期
    var date=new Date();
    var res=date.Format("yyyy-MM-dd HH:mm:ss  星期W");
    console.info(res);
    var date1=new  Date();
    //增加2个星期
    var date2=date1.DateAdd('w',2);
    //求日期差
    var dif=daysBetween(date1.Format("yyyy-MM-dd"),date2.Format("yyyy-MM-dd"))
    console.info(dif);
    //比较日期差
    var dateDiff=date1.DateDiff('d',date2);
    console.info(dateDiff);
    //toString
    console.info(date1.toString())
    //判断是否是闰年
    console.info(date1.isLeapYear())

    3.结果

    2014-10-08 10:13:25  星期三
    14
    13
    2014/10/8
    false
    

    原:http://blog.csdn.net/whzhaochao/article/details/39890321
  • 相关阅读:
    2020年. NET Core面试题
    java Context namespace element 'component-scan' and its parser class ComponentScanBeanDefinitionParser are only available on JDK 1.5 and higher 解决方法
    vue 淡入淡出组件
    java http的get、post、post json参数的方法
    vue 父子组件通讯案例
    Vue 生产环境解决跨域问题
    npm run ERR! code ELIFECYCLE
    Android Studio 生成apk 出现 :error_prone_annotations.jar (com.google.errorprone:error) 错误
    记忆解析者芜青【总集】
    LwIP应用开发笔记之十:LwIP带操作系统基本移植
  • 原文地址:https://www.cnblogs.com/daysme/p/6553888.html
Copyright © 2011-2022 走看看