easyui时间格式问题

问题描述:

前端使用EasyUI,后台使用Spring MVC, 数据库里面存储的时间格式为:2014-06-10,但是后台返回给前台页面的数据是json格式的,类似于:1402367297000的形式,日期列datebox是无法解析的。具体如下图:

自己也是EasyUI小白,网上查查资料,倒腾下总算搞出来了,这里做下记录。

一般情况下我们所需的日期格式都是:2014-02-02或者2014/09/09形式的,因此首先要考虑实现一个添加日期格式化的插件。

jQuery日期格式化

在自己的js中添加代码来扩展jQuery,代码如下:

Date.prototype.format = function(format) {
	var o = {
		"M+" : this.getMonth() + 1, // 月
		"d+" : this.getDate(), // 天
		"h+" : this.getHours(), // 时
		"m+" : this.getMinutes(), // 分
		"s+" : this.getSeconds(), // 秒
		"q+" : Math.floor((this.getMonth() + 3) / 3), // 刻
		"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;
}

这样,就为jQuery添加上了日期格式化的功能了。可以简单的试试能否格式化成功:

示例代码:

<html>
<script>
    Date.prototype.format = function(format) {
        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;
    }
</script>

<body>
    <script>
        var date = new Date();
		console.info(date);
        console.info(date.format("yyyy-MM-dd hh:mm"));
    </script>
</body>

</html>

控制台输出结果:

可以看见的是,时间格式已经转换为我们需要的格式了。

formatDatebox

上述示例代码中,我们还是需要指定format,这里先抽象出一个formatDatebox函数,用于显示日期.

 function formatDatebox(value) {
            if (value == null || value == ‘‘) {
                return ‘‘;
            }
            var dt;
            if (value instanceof Date) {
                dt = value;
            } else {

                dt = new Date(value);

            }

            return dt.format("yyyy-MM-dd"); //扩展的Date的format方法(上述插件实现)
        }

同样我们简单的测试下:

console.info(formatDatebox(1402367297000));

"1402367297000"是时间格式的json形式,最后输出的结果为:2014-06-10。测试通过。

datebox指定formatter

前面的准备工作做完了,接下来就是将formatDatebox函数运用到datebox中去了,很简单,只需指定datagrid空间的列属性的fomatter为formatDatebox函数即可。

如下例子:

 columns: [
                {
                    field: ‘updateTime‘,
                    title: ‘更新时间‘,
                    formatter: formatDatebox,
                    sortable: true,
                    editor: ‘datebox‘
                }
                ]
         ]

之后即可看见现实效果为我们所需效果。

不过,还远远没有结束呢?根据上面的代码也发现了,我们可是是实现了行编辑的,当我们双击一条记录的时候,datebox里面的值丢失,而且通过日期选择器获取的格式也不一样。呵呵,这里我们就需要重写datagrid方法,使得datagrid行编辑时,日期控件内的时间格式正确显示,且不丢失数据,代码如下:

$.extend($.fn.datagrid.defaults.editors, {
	datebox : {
		init : function(container, options) {
			var input = $(‘<input type="text">‘).appendTo(container);
			input.datebox(options);
			return input;
		},
		destroy : function(target) {
			$(target).datebox(‘destroy‘);
		},
		getValue : function(target) {
			return $(target).datebox(‘getValue‘);//获得旧值
		},
		setValue : function(target, value) {
			console.info(formatDatebox(value));
			$(target).datebox(‘setValue‘, formatDatebox(value));//设置新值的日期格式
		},
		resize : function(target, width) {
			$(target).datebox(‘resize‘, width);
		}
	}
});

完成之后的效果见下图:

OK,大概就是这么多了,抱歉的是这里没有提供一个完整的demo,因为涉及到后台的交互,本来可以使用静态数据来模拟展示,但是时间不够,也没多大的兴致再去实现一遍了。先就到这儿了。

easyui时间格式问题

时间: 2024-07-28 18:27:11

easyui时间格式问题的相关文章

EasyUI的DataGrid日期列(datebox)正确显示json时间格式

问题描述: 前端使用EasyUI,后台使用Spring MVC, 数据库里面存储的时间格式为:2014-06-10,但是后台返回给前台页面的数据是json格式的,类似于:1402367297000的形式,日期列datebox是无法解析的.具体如下图: 自己也是EasyUI小白,网上查查资料,倒腾下总算搞出来了,这里做下记录. 一般情况下我们所需的日期格式都是:2014-02-02或者2014/09/09形式的,因此首先要考虑实现一个添加日期格式化的插件. jQuery日期格式化 在自己的js中添

EasyUI 时间插件使用配置

一,在项目中引入jquery-easyui 二,静态资源映射 1)<mvc:resources mapping="/jquery-easyui-1.5.2/**" location="/easyui/" /> 三,页面配置 1)在head中引入: <link rel="stylesheet" type="text/css" href="jquery-easyui-1.5.2/themes/defau

android时间格式的转化,String,Date,long

long time=System.currentTimeMillis(); System.out.println(time); SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); java.util.Date d1=new Date(time); String now=format.format(d1); System.out.println(now); long t = 0; try { java.

linux基础--时间格式

在linux中,经常会使用各种时间格式,特别在shell脚本中会经常调用,默认的时间格式为 [[email protected] ~]# date Wed Dec 14 19:43:07 CST 2016 注:如果拼接日期格式中有空格,则需要使用"..."来表示 常见格式有: %Y    年份 %m    月份(01-12) %d    按月计的日期(例如:01) %H    小时(00-23) %l    时(1-12) %M    分(00-59) %S    秒(00-60) %

Windows2008R2 IIS7日期时间格式更改

背景:最近把WEB程序从Win2003迁移到Win2008R2上,遇到一个问题:页面上日期显示格式跟原来不一样(如图).现在记录一下备忘. 正确格式是:2016-09-13:而显示出来是2016/09/13. 怎么解决此问题呢? 解决方法: 1. 在控制面板----区域和语言----格式----日期和时间格式,变更为如下格式. 2. 区域和语言----管理----复制设置----选中"欢迎屏幕和系统帐户" 3. 服务器管理器----角色----Web服务器(IIS)----系统服务. 

IOS 时间格式 时间转换 大总结

//实例化一个NSDateFormatter对象 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; //设定时间格式,这里可以设置成自己需要的格式 [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; //用[NSDate date]可以获取系统当前时间 NSString *currentDateStr = [dateFormatter stringFr

JavaScript验证时间格式

1. 短时间,形如 (13:04:06) function isTime(str) { var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/); if (a == null) {alert('输入的参数不是时间格式'); return false;} if (a[1]>24 || a[3]>60 || a[4]>60) { alert("时间格式不对"); return false } return true;

Sql日期时间格式转换

Sql日期时间格式转换 sql server2000中使用convert来取得datetime数据类型样式(全) 日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, 20) 结果:2007-02-01 08:02/*时间一般为getdate()函数或数据表里的字段*/ CONVERT(varchar(10), 时间一, 23) 结果:2007-02-01 /*varchar(10)表示日期输出的格式,如果不够长会发生截取*/ 语句及查询结果:Select CONV

时间格式变更之EL表达式

昨日写一个班次设定,保存后台数据库的所有时间都是整数,小数,前台页面时需要变换成正常时间格式,比如22:30在后台数据库存22.5  22:00后台是22,后台取了一串List,以Page的形式放置,然后分别set了一下格式,加到了model里,到前台展示后,页面总是报错,原因是set后数据库的值变更了,我百思不得其解 头疼了很久 困扰了1天 一直在想后台怎么解决.贴出错误代码: 后台: @RequestMapping(value = {"list", ""}) p