easyUI datetimebox 自定义显示格式
2015-09-29 22:38
459 查看
http://blog.csdn.net/littlewolf766/article/details/7329123
项目里需要显示自定义显示格式,比如只显示yyy,yyyy-mm,yyyy-mm-dd等格式。直接设置formatter参数的话,总是报错。用firefox调试后发现,好像在设置新的日期时
datetimebox控件会调用默认的parser指定的函数,把字符串转为日期格式。由于默认的只认"yyyy-MM-dd hh:mm:ss"格式(可以是其它分隔符,并非一定要是'-'),所以如果formatter函数返回的不是这个格式,会报错。
下面是我自己的实现方式:
datetimebox 设置:
[javascript] view plaincopy
//加载日期控件
function loadDate() {
startDTObj = $("#startDate");
endDTObj = $("#endDate");
startDTObj.datetimebox({
showSeconds:false,
formatter: formatDateText,
parser: parseDate
});
endDTObj.datetimebox({
showSeconds:false,
formatter: formatDateText,
parser: parseDate
});
}
[javascript] view plaincopy
/格式化显示的文本
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’
[javascript] view plaincopy
//把时间格式字符串转化为时间
//如下格式
//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]);
}
网上找的别人写的格式化日期的方法,很好用
[javascript] view plaincopy
//为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;
}
完成后效果:
项目里需要显示自定义显示格式,比如只显示yyy,yyyy-mm,yyyy-mm-dd等格式。直接设置formatter参数的话,总是报错。用firefox调试后发现,好像在设置新的日期时
datetimebox控件会调用默认的parser指定的函数,把字符串转为日期格式。由于默认的只认"yyyy-MM-dd hh:mm:ss"格式(可以是其它分隔符,并非一定要是'-'),所以如果formatter函数返回的不是这个格式,会报错。
下面是我自己的实现方式:
datetimebox 设置:
[javascript] view plaincopy
//加载日期控件
function loadDate() {
startDTObj = $("#startDate");
endDTObj = $("#endDate");
startDTObj.datetimebox({
showSeconds:false,
formatter: formatDateText,
parser: parseDate
});
endDTObj.datetimebox({
showSeconds:false,
formatter: formatDateText,
parser: parseDate
});
}
[javascript] view plaincopy
/格式化显示的文本
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’
[javascript] view plaincopy
//把时间格式字符串转化为时间
//如下格式
//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]);
}
网上找的别人写的格式化日期的方法,很好用
[javascript] view plaincopy
//为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 datebox 扩展 只显示年月
- UIPickView和UIDatePicker(了解)
- SPOJ QTREE Query on a tree 树链剖分
- Easyui的DateBox日期格式化
- MFC的GUI窗口使用Console输出函数printf
- USACO 2.1 Sorting a Three-Valued Sequence (贪心)
- iOS界面编程-UIActivityIndicatorView
- 向datagrid中动态添加不重复的记录,easyuidatagrid添加
- Built-in Functions学习
- Codeforces Beta Round #5——C. Longest Regular Bracket Sequence
- 【UIKit-110-9】#import <UIKit/UITableView.h>数据源
- 【UUIKit-110-8】#import <UIKit/UITableView.h>代理方法
- JAVA中Random类的Random r=new Random()和Random r=new Random(seedValue)的区别
- 第二十三篇:UITableView,UIScrollView,NSTimer,UIButton综合应用代码---团购
- UI中关于NSBundle mainBundle获取不到数据解决方案
- 相册读取照片UIImagePickController
- iOS界面编程-UIProgressView
- 自定义UITabBardUIButtton上面的UIImageView和UILabel的布局
- 电脑装多系统,启动出现grub rescue,“normal.mod not found”解决办法(windows,ubuntu)
- 9.13~9.30刷题(shui)题解