js 时间加减

js 方面时间时区相关部分:

时区的定义

var tz_offset={
    'east0':0,
    'east1':1,
    'east2':2,
    'east3':3,
    'east4':4,
    'east5':5,
    'east6':6,
    'east7':7,
    'east8':8,
    'east9':9,
    'east10':10,
    'east11':11,
    'east12':12,
    'west1':-1,
    'west2':-2,
    'west3':-3,
    'west4':-4,
    'west5':-5,
    'west6':-6,
    'west7':-7,
    'west8':-8,
    'west9':-9,
    'west10':-10,
    'west11':-11,
    'west12':-12,
    'Asia/Shanghai':"8"
};

 

在日期上进行偏移:

1.

Date.prototype.addHours = function(h)
{//h可以是数字,如果为数字表示小时,可以为字符串,表示为 数字小时.数字分钟.数字秒,h可以是正数,也可以为负数
    if (typeof(h)=="string") {
        num_symbol="";
        if (h[0]=='-'){//如果h为负数的字符串,则符号为-,值为后面字符串
            num_symbol="-";
            h= h.substr(1);
        }
        var pattern =/\d+/g;
        number_list= h.match(pattern);//获取数字列表
        _hour=0;
        _minute=0;
        _seconds=0;
        if (number_list.length>0){
            _hour=parseInt(num_symbol+number_list[0]);
        }
        if (number_list.length>1){
            _minute=parseInt(num_symbol+number_list[1]);
        }
        if (number_list.length>2){
            _seconds=parseInt(num_symbol+number_list[2]);
        }
        this.setHours(this.getHours()+_hour,this.getMinutes()+_minute,this.getSeconds()+_seconds);
    }
    else {//如果h非字符串而是单个数字,表示小时
        this.setHours(this.getHours()+parseInt(h),this.getMinutes(),this.getSeconds());
    }
};

 2.

Date.prototype.addHours = function(h)
{//h可以是数字,如果为数字表示小时,可以为字符串,表示为 数字小时.数字分钟.数字秒,h可以是正数,也可以为负数
    var timestamp=Date.parse(this);
    timestamp=timestamp+parseInt(h)*60*60*1000;
    newdate=new Date()
    newdate.setTime(timestamp)
    return newdate
};

 

以字符串格式输出日期,并且加上时区的定义

Date.prototype.format = function(fmt,tz)
{ //author: meizz
    //如果没有tz时区指示符号,则使用本地时区
    if (!tz){
        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()             //毫秒
        };
    }
    else{
        tz_time=this.addHours(tz_offset[tz]);
        var o = {
            "M+" : tz_time.getUTCMonth()+1,                 //月份
            "d+" : tz_time.getUTCDate(),                    //
            "h+" : tz_time.getUTCHours(),                   //小时
            "m+" : tz_time.getUTCMinutes(),                 //
            "s+" : tz_time.getUTCSeconds(),                 //
            "q+" : Math.floor((tz_time.getUTCMonth()+3)/3), //季度
            "S"  : tz_time.getUTCMilliseconds()             //毫秒
        };
    }
    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;
} ;

 

posted @ 2015-11-17 10:51  雅思敏  阅读(1593)  评论(0编辑  收藏  举报