JQuery easyUI datetimebox 自定义显示格式

项目里需要显示自定义显示格式,比如只显示yyy,yyyy-mm,yyyy-mm-dd等格式。直接设置formatter参数的话,总是报错。用firefox调试后发现,好像在设置新的日期时datetimebox控件会调用默认的parser指定的函数,把字符串转为日期格式。由于默认的只认"yyyy-MM-dd hh:mm:ss"格式(可以是其它分隔符,并非一定要是'-'),所以如果formatter函数返回的不是这个格式,会报错。

下面是我自己的实现方式:

datetimebox 设置:

//加载日期控件  
function loadDate() {  
    startDTObj = $("#startDate");  
    endDTObj = $("#endDate");  
    startDTObj.datetimebox({  
                showSeconds:false,  
                formatter: formatDateText,  
                parser: parseDate  
            });  
    endDTObj.datetimebox({  
        showSeconds:false,  
        formatter: formatDateText,  
        parser: parseDate  
    });  
}
//格式化显示的文本  
function formatDateText(date) {  
    var rainType = rainTypeObj.combobox("getValue");  
    switch (rainType) {  
        case '0':  
                return date.formatDate("yyyy-MM-dd hh:mm");  
            break;  
        case '1':  
                return date.formatDate("yyyy-MM-dd hh");  
            break;  
        case '2':  
                return date.formatDate("yyyy-MM-dd");  
            break;  
        case '3':  
                return date.formatDate("yyyy-MM");  
            break;  
        case '4':  
                return date.formatDate("yyyy-MM");  
            break;  
        case '5':  
                return date.formatDate("yyyy");  
            break;  
        default:  
            break;  
    }  
} 
本菜鸟写的,由于js,正则不是很熟,写得不好。月,日默认使用‘01’,时间部分默认使用‘00’
//把时间格式字符串转化为时间  
//如下格式  
//2006  
//2006-01  
//2006-01-01  
//2006-01-01 12  
//2006-01-01 12:12  
//2006-01-01 12:12:12  
function parseDate(dateStr) {  
    var regexDT = /(\d{4})-?(\d{2})?-?(\d{2})?\s?(\d{2})?:?(\d{2})?:?(\d{2})?/g;  
    var matchs = regexDT.exec(dateStr);  
    var date = new Array();  
    for (var i = 1; i < matchs.length; i++) {  
        if (matchs[i]!=undefined) {  
            date[i] = matchs[i];  
        } else {  
            if (i<=3) {  
                date[i] = '01';  
            } else {  
                date[i] = '00';  
            }  
        }  
    }  
    return new Date(date[1], date[2]-1, date[3], date[4], date[5],date[6]);  
}
网上找的别人写的格式化日期的方法,很好用
//为date类添加一个format方法  
//yyyy 年  
//MM 月  
//dd 日  
//hh 小时  
//mm 分  
//ss 秒  
//qq 季度  
//S  毫秒  
Date.prototype.formatDate = function (format) //author: meizz  
{  
    var o = {  
        "M+": this.getMonth() + 1, //month  
        "d+": this.getDate(),    //day  
        "h+": this.getHours(),   //hour  
        "m+": this.getMinutes(), //minute  
        "s+": this.getSeconds(), //second  
        "q+": Math.floor((this.getMonth() + 3) / 3),  //quarter  
        "S": this.getMilliseconds() //millisecond  
    }  
    if (/(y+)/.test(format)) format = format.replace(RegExp.$1,  
    (this.getFullYear() + "").substr(4 - RegExp.$1.length));  
    for (var k in o) if (new RegExp("(" + k + ")").test(format))  
        format = format.replace(RegExp.$1,  
      RegExp.$1.length == 1 ? o[k] :  
        ("00" + o[k]).substr(("" + o[k]).length));  
    return format;  
}

完成后效果:

转载于:https://my.oschina.net/junn/blog/148661

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值