javascript、php与mysql日期计算函数
admin
2023-06-13 21:02:59
0
  1. 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)
  2. php:
    参见:date_add函数
  3. mysql:
    参见:DATE_ADD函数

相关内容

热门资讯

山西沁源矿难背后:沦为空文的1... 5月22日晚7时29分,山西省沁源县留神峪煤矿发生瓦斯爆炸事故。截至目前,事故已致82人遇难,2人失...
微软Copilot Cowor... IT之家 5 月 26 日消息,PromptArmor 昨日(5 月 25 日)发布博文,报道称微软...
瑞达精工取得数显天气气象钟专利... 国家知识产权局信息显示,福建瑞达精工股份有限公司取得一项名为“一种数显天气气象钟”的专利,授权公告号...
苹果之后,三星也加速去高通化! 5月26日消息,据产业链最新消息,苹果计划将完全自主研发的5G基带芯片应用到iPhone 18全系机...
300万以下的京沪“老破小”卖... 作者 | 孙梦凡今年楼市的“小阳春”行情,持续期比往年更长。以往,楼市“小阳春”大多集中在3月~4月...
原创 2... 来源:网络消息 当自然指数最新一期数据揭晓,中国科学技术大学以1021.18分的总论文分数,稳居中...
阿里云新加坡连发多款AI新品,... 南都N视频记者了解获悉,5月26日,阿里云在新加坡面向海外市场发布一系列AI更新产品:官网Qwen ...
全网刷屏的华为“韬定律”,到底... 2026年5月,上海。华为发布: 韬(τ)定律。 报道原文,是这么写的: ……近年来,摩尔定律...
消息称国产头部旗舰集体测试抗反... 【CNMO科技消息】5月26日,数码博主“智慧皮卡丘”爆料称,国内市场排名前五的手机厂商下一代旗舰机...
伊朗被曝寻求解冻240亿美元资... 据伊朗方面当地时间5月26日消息,伊朗议长卡利巴夫在访问卡塔尔期间推动解冻伊朗240亿美元资金。伊方...