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; } ;