- javascript:
/**
* @desc:日期计算类
* @author [lee] <[]>
* @param dur 增量 如:+1day -5 year 6months
* @param time 传入时间 支持格式 1、y-m-d H:i:s 2、1111111111
* @return 字符串 如:2018-01-01 00:00:00
*/
function dateadd(dur,time = false){
/*
@desc:主方法,执行转换
*/
this.getdate = function(){
var test_year = /(-)?\d+(\s)?year(s)?/.exec(dur)
var test_month = /(-)?\d+(\s)?month(s)?/.exec(dur)
var test_day = /(-)?\d+(\s)?day(s)?/.exec(dur)
var test_hour = /(-)?\d+(\s)?hour(s)?/.exec(dur)
var test_minute = /(-)?\d+(\s)?minute(s)?/.exec(dur)
var test_second = /(-)?\d+(\s)?second(s)?/.exec(dur)
test_year = (!test_year)?0:parseInt(test_year[0])
test_month = (!test_month)?0:parseInt(test_month[0])
test_day = (!test_day)?0:parseInt(test_day[0])
test_hour = (!test_hour)?0:parseInt(test_hour[0])
test_minute = (!test_minute)?0:parseInt(test_minute[0])
test_second = (!test_second)?0:parseInt(test_second[0])
var outtime
if(time){
if(((typeof(time)=='string') || (time instanceof String)) && (/^\d{4}(-\d{2}(-\d{2})?)?$/.test(time))){
outtime = new Date(time)
outtime.setFullYear(parseInt(outtime.getFullYear()) + test_year)
outtime.setMonth(parseInt(outtime.getMonth()) + test_month)
outtime.setDate(parseInt(outtime.getDate()) + test_day)
outtime.setHours(parseInt(outtime.getHours()) + test_hour)
outtime.setMinutes(parseInt(outtime.getMinutes()) + test_minute)
outtime.setSeconds(parseInt(outtime.getSeconds()) + test_second)
var month = this.parsetime(parseInt(outtime.getUTCMonth())+1)
var date = this.parsetime(parseInt(outtime.getUTCDate()))
var hour = this.parsetime(parseInt(outtime.getUTCHours()))
var minute = this.parsetime(parseInt(outtime.getUTCMinutes()))
var second = this.parsetime(parseInt(outtime.getUTCSeconds()))
}else{
outtime = new Date(time*1000)
outtime.setFullYear(parseInt(outtime.getFullYear()) + test_year)
outtime.setMonth(parseInt(outtime.getMonth()) + test_month)
outtime.setDate(parseInt(outtime.getDate()) + test_day)
outtime.setHours(parseInt(outtime.getHours()) + test_hour)
outtime.setMinutes(parseInt(outtime.getMinutes()) + test_minute)
outtime.setSeconds(parseInt(outtime.getSeconds()) + test_second)
var month = this.parsetime(parseInt(outtime.getMonth())+1)
var date = this.parsetime(parseInt(outtime.getDate()))
var hour = this.parsetime(parseInt(outtime.getHours()))
var minute = this.parsetime(parseInt(outtime.getMinutes()))
var second = this.parsetime(parseInt(outtime.getSeconds()))
}
}else{
outtime = new Date()
outtime.setFullYear(parseInt(outtime.getFullYear()) + test_year)
outtime.setMonth(parseInt(outtime.getMonth()) + test_month)
outtime.setDate(parseInt(outtime.getDate()) + test_day)
outtime.setHours(parseInt(outtime.getHours()) + test_hour)
outtime.setMinutes(parseInt(outtime.getMinutes()) + test_minute)
outtime.setSeconds(parseInt(outtime.getSeconds()) + test_second)
var month = this.parsetime(parseInt(outtime.getMonth())+1)
var date = this.parsetime(parseInt(outtime.getDate()))
var hour = this.parsetime(parseInt(outtime.getHours()))
var minute = this.parsetime(parseInt(outtime.getMinutes()))
var second = this.parsetime(parseInt(outtime.getSeconds()))
}
var year = outtime.getFullYear()
var ret = year+'-'+month+'-'+date+' '+hour+':'+minute+':'+second
return ret
}
/*
@desc:内部方法,不足10补0
*/
this.parsetime = function(input){
var ret
if(input >= 0 && input < 10){
ret = '0'+input
}else{
ret = input
}
return ret
}
}
var dateadd = new dateadd('+3hour +2year-5months','2018-05-08')
var ret = dateadd.getdate()
console.log(ret)
- php:
参见:date_add函数
- MySQL:
参见:DATE_ADD函数
名称栏目:javascript、php与mysql日期计算函数
URL分享:
http://cdweb.net/article/jcpohp.html