zoukankan      html  css  js  c++  java
  • 时间js

    function DateUtil(){ 
    this.url = ""; 
    this.op={ 
    partten:{mdy:"m/d/y",ymd:"y/m/d",dmy:"d/m/y"} 
    }; 
    this.cdate = new Date(); 
    } 
    
    DateUtil.prototype.updateDate=function(){ 
    this.cdate = new Date(); 
    }; 
    
    DateUtil.prototype.setTime=function(v){ 
    this.cdate.setTime(v); 
    }; 
    
    DateUtil.prototype.getYear=function(){ 
    return this.cdate.getFullYear(); 
    }; 
    DateUtil.prototype.getMonth=function(){ 
    return this.cdate.getMonth()+1; 
    }; 
    
    DateUtil.prototype.getDay=function(){ 
    return this.cdate.getDate(); 
    }; 
    
    DateUtil.prototype.getFirstDayOfMonth=function(d){ 
    var currentMonth = new Date(d.getTime())||new Date(); 
    currentMonth.setDate(1); 
    return currentMonth; 
    }; 
    
    DateUtil.prototype.getLastDayOfMonth=function(d){ 
    var nextMonth = new Date(d.getTime())||new Date(); 
    var month = nextMonth.getMonth(); 
    nextMonth.setMonth(month+1); 
    nextMonth.setDate(0); 
    return nextMonth; 
    }; 
    
    //对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 
    DateUtil.prototype.format = function (d,fmt) { //author: meizz 
    var o = { 
    "M+": d.getMonth() + 1, //月份 
    "d+": d.getDate(), //日 
    "h+": d.getHours(), //小时 
    "m+": d.getMinutes(), //分 
    "s+": d.getSeconds(), //秒 
    "q+": Math.floor((d.getMonth() + 3) / 3), //季度 
    "S": d.getMilliseconds() //毫秒 
    }; 
    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (d.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; 
    }; 
    
    DateUtil.prototype.getHours=function(){ 
    return this.cdate.getHours(); 
    }; 
    DateUtil.prototype.getMinutes=function(){ 
    return this.cdate.getMinutes(); 
    }; 
    DateUtil.prototype.getSeconds=function(){ 
    return this.cdate.getSeconds(); 
    }; 
    
    DateUtil.prototype.getToday=function(){ 
    return this.format(this.cdate, "yyyy-MM-dd"); 
    }; 
    /** 
    * 计算出相差的时间后的日期 
    * @param d 日期 
    * @param s 相差的时间 
    * @param t 类型:day天, month月, year年, hour, minute, second 
    */ 
    DateUtil.prototype.getNewDate=function(d, s, t){ 
    if("year" == t){ 
    var year = d.getFullYear() + s; 
    var strDate = year+"/"+this.format(d, "MM/dd hh:mm:ss"); 
    return new Date(strDate); 
    }else if("month" == t){ 
    var year = d.getFullYear(); 
    var month = d.getMonth()+1 + s; 
    var strDate=""; 
    if (month==0) { 
    strDate = (year-1)+"/"+12+"/"+this.format(d, "dd hh:mm:ss"); 
    }else if (month>12) { 
    strDate = (year+1)+"/"+1+"/"+this.format(d, "dd hh:mm:ss"); 
    }else { 
    strDate = year+"/"+month+"/"+this.format(d, "dd hh:mm:ss"); 
    } 
    return new Date(strDate); 
    }else if("day" == t){ 
    var lt = d.getTime() + s*24*60*60*1000; 
    return new Date(lt); 
    }else if("hour" == t){ 
    var lt = d.getTime() + s*60*60*1000; 
    return new Date(lt); 
    }else if("minute" == t){ 
    var lt = d.getTime() + s*60*1000; 
    return new Date(lt); 
    }else if("second" == t){ 
    var lt = d.getTime() + s*1000; 
    return new Date(lt); 
    } 
    return d; 
    }; 
    
    DateUtil.prototype.parseDate=function(s){ 
    if(s != null && s != ""){ 
    try{ 
    if(typeof(s) == "string"){ 
    s = s.replace(/-/g, "/"); 
    return new Date(s); 
    }else if(typeof(s) == "number"){ 
    return new Date(s); 
    } 
    }catch(e){ 
    alert(e.message); 
    } 
    } 
    return null; 
    }; 
    
    DateUtil.prototype.getCurrentTimeString=function(){ 
    return this.getYear()+""+this.getMonth()+""+ 
    this.getDay()+""+this.getHours()+""+ 
    this.getMinutes()+""+this.getSeconds(); 
    }; 
    
    DateUtil.prototype.getWeek=function(date){ 
    var week = 0; 
    var df = "mmddyy"; 
    if(date==null || date =="" || typeof(date) == "undefined"){ 
    date = this.getToday(); 
    df = "yyMMdd"; 
    } 
    date = date.replace(///g,"-"); 
    week = $.ajax({ 
    type:"get", 
    url:basePath+"/dateUtil/week/"+encodeURIComponent(date)+"/"+df, 
    cache:false, 
    async:false, 
    dataType:"text" 
    }).responseText; 
    return week; 
    }; 
    
    DateUtil.prototype.getQuarter=function(date, format){ 
    var month = 0; 
    if(date && typeof(date) == "string" && date != "" && format && format != ""){ 
    var p = this.op.partten[format]; 
    var index = p.indexOf("m"); 
    var d = date.split("/"); 
    if(index == 0){ 
    month = parseInt(d[0],10); 
    }else{ 
    month = parseInt(d[1],10); 
    } 
    }else if(date && typeof(date) == "object"){ 
    month = date.getMonth(); 
    }else if(date && typeof(date) == "number"){ 
    month = date; 
    }else{ 
    month = this.getMonth(); 
    } 
    if(month % 3 == 0){ 
    return month / 3; 
    }else{ 
    return parseInt(month / 3 + 1); 
    } 
    }; 
    
    DateUtil.prototype.getQuarterByMonth = function(m){ 
    if(m % 3 == 0){ 
    return m / 3; 
    }else{ 
    return parseInt(m / 3 + 1); 
    } 
    }; 
    /** 
    * 若date为空,则返回当前日期是周几,否则数据类型为string,格式都为m/d/y 
    * @param date 
    * @returns 
    */ 
    DateUtil.prototype.getDayOfWeek=function(date){ 
    if(date && typeof(date) == "string"){ 
    var d = date.split("/"); 
    var md = new Date(parseInt(d[2]), parseInt(d[0]), parseInt(d[1])); 
    return md.getDay(); 
    }else{ 
    this.updateDate(); 
    return this.getDay(); 
    } 
    }; 
    /** 
    * 得到一个日期所在周的开始时间和结束时间,不传参数为当前周 
    * @param date 
    * @returns {___anonymous5423_5464} 
    */ 
    DateUtil.prototype.getStartAndEndDayOf=function(date, type){ 
    var today = date||new Date(); 
    var startDate = "", endDate = ""; 
    if(type == "day"){ 
    startDate = this.format(today, "yyyy-MM-dd"); 
    return {"startDate":startDate, "endDate":startDate}; 
    }else if(type == "week"){ 
    var dayOfweek = today.getDay(); 
    var monday = new Date(today.getFullYear(), today.getMonth(), today.getDate()-dayOfweek+1); 
    var sunday = new Date(today.getFullYear(), monday.getMonth(), monday.getDate()+6); 
    startDate = this.format(monday, "yyyy-MM-dd"); 
    endDate = this.format(sunday, "yyyy-MM-dd"); 
    return {"startDate":startDate, "endDate":endDate}; 
    }else if(type == "month"){ 
    var monday = this.getFirstDayOfMonth(today); 
    var sunday = this.getLastDayOfMonth(today); 
    startDate = this.format(monday, "yyyy-MM-dd"); 
    endDate = this.format(sunday, "yyyy-MM-dd"); 
    return {"startDate":startDate, "endDate":endDate}; 
    }else if(type == "quarter"){ 
    var quarter = this.getQuarter(today, ""); 
    startDate = this.format(new Date(today.getFullYear(), quarter*3-3, 1), "yyyy-MM-dd"); 
    endDate = this.format(new Date(today.getFullYear(), quarter*3, 0), "yyyy-MM-dd"); 
    return {"startDate":startDate, "endDate":endDate}; 
    }else if(type == "year"){ 
    startDate = today.getFullYear()+"-01-01"; 
    endDate = today.getFullYear()+"-12-31"; 
    return {"startDate":startDate, "endDate":endDate}; 
    }else{ 
    startDate = this.format(today, "yyyy-MM-dd"); 
    return {"startDate":startDate, "endDate":startDate}; 
    } 
    }; 
    
    DateUtil.prototype.getPreDateForGapTime = function(date, type){ 
    var today = this.parseDate(date)||new Date(); 
    if(type.indexOf("pre") == 0){ 
    type = type.replace("pre",""); 
    var endDate = this.format(today, "yyyy-MM-dd"); 
    if(type.toLowerCase() == "day"){ 
    return {"startDate":endDate, "endDate":endDate}; 
    }else if(type.toLowerCase() == "week"){ 
    var startDate = this.format(this.getNewDate(today, -7, "day"), "yyyy-MM-dd"); 
    return {"startDate":startDate, "endDate":endDate}; 
    }else if(type.toLowerCase() == "month"){ 
    var startDate = this.format(this.getNewDate(today, -1, "month"), "yyyy-MM-dd"); 
    return {"startDate":startDate, "endDate":endDate}; 
    }else if(type.toLowerCase() == "quarter"){ 
    var startDate = this.format(this.getNewDate(today, -90, "day"), "yyyy-MM-dd"); 
    return {"startDate":startDate, "endDate":endDate}; 
    }else if(type.toLowerCase() == "year"){ 
    var startDate = this.format(this.getNewDate(today, -1, "year"), "yyyy-MM-dd"); 
    return {"startDate":startDate, "endDate":endDate}; 
    }else{ 
    return {"startDate":endDate, "endDate":endDate}; 
    } 
    }else{ 
    return this.getStartAndEndDayOf(date, type); 
    } 
    }; 
    
    DateUtil.prototype.newgetPreDateForGapTime = function(date, type,i){ 
    var today = this.parseDate(date)||new Date(); 
    if(type.indexOf("pre") == 0){ 
    type = type.replace("pre",""); 
    if(type.toLowerCase() == "day" || type.toLowerCase() == "hour" || type.toLowerCase() == "minute"){ 
    var startDate = this.format(this.getNewDate(today, 1*i, "day"), "yyyy-MM-dd"); 
    var time=this.getStartAndEndDayOf(new Date(startDate), type.toLowerCase()); 
    return {"startDate":time.startDate, "endDate":time.endDate}; 
    }else if(type.toLowerCase() == "week"){ 
    var startDate = this.format(this.getNewDate(today, 7*i, "day"), "yyyy-MM-dd"); 
    var time=this.getStartAndEndDayOf(new Date(startDate), type.toLowerCase()); 
    return {"startDate":time.startDate, "endDate":time.endDate}; 
    }else if(type.toLowerCase() == "month"){ 
    var startDate = this.format(this.getNewDate(today, 1*i, "month"), "yyyy-MM-dd"); 
    var time=this.getStartAndEndDayOf(new Date(startDate), type.toLowerCase()); 
    return {"startDate":time.startDate, "endDate":time.endDate}; 
    }else if(type.toLowerCase() == "quarter"){ 
    var startDate = this.format(this.getNewDate(today, 90*i, "day"), "yyyy-MM-dd"); 
    var time=this.getStartAndEndDayOf(new Date(startDate), type.toLowerCase()); 
    return {"startDate":time.startDate, "endDate":time.endDate}; 
    }else if(type.toLowerCase() == "year"){ 
    var startDate = this.format(this.getNewDate(today, 1*i, "year"), "yyyy-MM-dd"); 
    var time=this.getStartAndEndDayOf(new Date(startDate), type.toLowerCase()); 
    return {"startDate":time.startDate, "endDate":time.endDate}; 
    }else{ 
    return {"startDate":endDate, "endDate":endDate}; 
    } 
    }else{ 
    return this.getStartAndEndDayOf(date, type); 
    } 
    }; 
    function isLeapYear(year) { 
        return (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0); 
    } 
    /** 
    * 获取某一年份的某一月份的天数 
    * 
    * @param {Number} year 
    * @param {Number} month 
    */ 
    function getMonthDays(year, month) { 
        return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month] || (isLeapYear(year) ? 29 : 28); 
    } 
    /** 
    * 获取某年的某天是第几周 
    * @param {Number} y 
    * @param {Number} m 
    * @param {Number} d 
    * @returns {Number} 
    */ 
    function getWeekNumber(y, m, d) { 
        var now = new Date(y, m - 1, d), 
            year = now.getFullYear(), 
            month = now.getMonth(), 
            days = now.getDate(); 
        //那一天是那一年中的第多少天 
        for (var i = 0; i < month; i++) { 
            days += getMonthDays(year, i); 
        } 
    
        //那一年第一天是星期几 
        var yearFirstDay = new Date(year, 0, 1).getDay() || 7; 
    
        var week = null; 
        if (yearFirstDay == 1) { 
            week = Math.ceil(days / yearFirstDay); 
        } else { 
            days -= (7 - yearFirstDay + 1); 
            week = Math.ceil(days / 7) + 1; 
        } 
    
        return week; 
    } 
    
    var DUtil = new DateUtil();
    

      

  • 相关阅读:
    luoguP1558 色板游戏
    Tyvj1147
    Tyvj1147
    带修改的莫队(日常普及知识)
    带修改的莫队(日常普及知识)
    luoguP1903 数颜色(通过一道题认识带修改莫队)
    luoguP1903 数颜色(通过一道题认识带修改莫队)
    108.虚函数表原理(获取虚函数)
    104.virtual虚函数多态与异构数据结构
    106.多态与虚函数
  • 原文地址:https://www.cnblogs.com/pureEve/p/6525620.html
Copyright © 2011-2022 走看看