项目里需要显示自定义显示格式,比如只显示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;
    }
}


 

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

easyUI datetimebox 自定义显示格式

欢迎关注公众号:程序员面试经验分享(jobbible)

easyUI datetimebox 自定义显示格式

 

 

相关文章: