美文网首页
Javascript自定义日期格式化

Javascript自定义日期格式化

作者: zhaochengqi | 来源:发表于2018-09-10 18:41 被阅读25次

    Date MDN

    参考java类java.text.SimpleDateFormat

    function DateFormat(date, pattern) {
        if(arguments.length == 1 && typeof date == 'string'){
            pattern = date;
            date = null
        }
        var _p = pattern || 'yyyy/MM/dd HH:mm:ss'
        date = date||new Date()
    
        var _PLACEGOLDER = '_@@_'
    
        var AP = ['AM', 'PM']
        var WEEKDAY = ['日','一','二','三','四','五','六', '礼拜']
    
        var textIgnore = []
        var _i = 0
    
        _p = _p.replace(/('.*')/g, function(match){
            textIgnore.push(match.substring(1, match.length-1) )
            return _PLACEGOLDER
        })
    
        var lengthHandler= function(str, length){
            str += ''
            var l = length - str.length
            if(l > 0) {
                return (Math.pow(10, l)+'').substr(1) + str
            }else {
                return str.substr(0-l, length)
            }
        }
    
        var patterns = {}
        //Year
        patterns['y+'] = function (match, offset, string){
            let target = date.getFullYear()
            return lengthHandler(target, match.length)
        }
        //Month in year
        patterns['M+'] = function (match, offset, string){
            let target = date.getMonth() + 1
            return lengthHandler(target, match.length)
        }
        //Day in month
        patterns['d+'] = function (match, offset, string){
            let target = date.getDate()
            return lengthHandler(target, match.length)
        }
        //Am/pm marker
        patterns['a'] = function (match, offset, string){
            let target = date.getHours()
            if(target >= 0 && target < 12){
                target = AP[0]
            }else{
                target = AP[1]
            }
            return target
        }
    
        //Hour in day (0-23)
        patterns['H+'] = function (match, offset, string){
            let target = date.getHours()
            return lengthHandler(target, match.length)
        }
    
        //Hour in am/pm (1-12)
        patterns['h+'] = function (match, offset, string){
            let target = date.getHours()
            target = Math.abs(target - 12)
            return lengthHandler(target, match.length)
        }
    
        //Minute in hour(0-59)
        patterns['m+'] = function (match, offset, string){
            let target = date.getMinutes()
            return lengthHandler(target, match.length)
        }
    
        //Seconds in minute (0-59)
        patterns['s+'] = function (match, offset, string){
            let target = date.getSeconds()
            return lengthHandler(target, match.length)
        }
    
        //Millisecond
        patterns['S+'] = function (match, offset, string){
            let target = date.getSeconds()
            return lengthHandler(target, match.length)
        }
    
         //Day name in week
         patterns['E+'] = function (match, offset, string){
            let target = date.getDay()
            let length = match.length
            if(length == 1){
                return WEEKDAY[target]
            }else if(length == 2){
                return (WEEKDAY[7]||'周') + WEEKDAY[target]
            }
            
        }
    
        //Time zone
        patterns['z+'] = function (match, offset, string){
            let target = date.getTimezoneOffset()
            if(target > 0){
                return '-' + (target/60)
            }
            return '+' + (-target/60)
        }
    
        for(var k in patterns) {
            _p = _p.replace(new RegExp(k, 'g'), patterns[k]);
        }
    
        _p = _p.replace(new RegExp(_PLACEGOLDER, 'g'), function(){
            return textIgnore[_i++]
        })
    
        return _p
    }
    
    var str = DateFormat(new Date(), "[ '北京时间' z yyyy-MM-dd a hh:mm:ss.SSSS EE]")
    console.log(str)
    console.log(DateFormat("[ '北京时间' z yyyy-MM-dd a hh:mm:ss.SSSS EE]"))
    console.log(DateFormat())
    //[ 北京时间 +8 2018-09-10 PM 06:59:31.0031 礼拜一]
    //[ 北京时间 +8 2018-09-10 PM 06:59:31.0031 礼拜一]
    //2018/09/10 18:59:31
    

    相关文章

      网友评论

          本文标题:Javascript自定义日期格式化

          本文链接:https://www.haomeiwen.com/subject/ryojgftx.html