Extjs中对日期的处理

renderer: function(value) {
       if (Ext.isEmpty(value)) {//判断是否是日期类型的数据
              return ‘‘;
       } else {
         if (Ext.isDate(value))
            return Ext.util.Format.date(value, ‘Y-m-d H:i:s‘);// 用于时间控件返回值
        else
               return value;// 转换为Date类型
                }
        }
}

1、Extjs中对日期的校验---使用正则表达式:

var value ="2014-03-03";
var re = /^(\d{4})(\/|-)(\d{1,2})\2(\d{1,2})$/
var m = re.exec(value);
if (m != null) {
    var d = new Date(m[1],m[3]-1,m[4]);
    var falg =  d.getFullYear()==m[1] && d.getMonth()==(m[3]-1) && d.getDate()==m[4];
}
if(value==‘‘||value.length < 1){
     this.msgTarget = "qtip";
     this.invalidText = ‘必填项不能为空!‘;
     return false;
}else if(!falg){
     this.msgTarget = "qtip";
     this.invalidText = ‘格式不正确!‘;
     return false;
}

2、Extjs在grid列表中的处理----显示为NAN

renderer: function(value) {
        if (Ext.isEmpty(value)) {//判断是否是日期类型的数据
                return ‘‘;
        } else {
              if (Ext.isDate(value))
                 return Ext.util.Format.date(value, ‘Y-m-d H:i:s‘);// 用于时间控件返回值
     else
                return value;// 转换为Date类型
                }
      }
}
 

3、Extjs计算日期差:

var indate =     record.get("inDate");
            indate = indate.replace(/-/g,"/");
            value = value.replace(/-/g,"/");
            var inHours = new Date(indate);
            var FinishHours = new Date(value);
            var day = (FinishHours - inHours)/(24*60*60*1000);//天数
            var hours = (FinishHours - inHours)/(60*60*1000);//小时
                if(day>=0 && hours > 2){
                    return ‘<font color=blue></font><span >‘ + value + ‘</span>‘;
                }else{
                    return value;
}
 

附:在遇到问题2,如果后台使用了JsonArray来处理对象,那么可以使用下面的方法:

在使用Extjs的时候会有list想前台放回数据,jsonArray对日期的处理会处理成日期对象,按照时分秒的形式来处理;

为此,可以使用jsonconfig来处理日期的形式;

下面这个方法是将数据库中的含有时分秒的格式转换为日期;不含时分秒;发送到前台的数据是个string类型

可以在format中填写你想要的日期格式就可以转换;

在    registerJsonValueProcessor这个方法中,注意导入的数据库中的日期类型,而不是java的,可以将第一个参数

更改为Date 那么String str = new SimpleDateFormat(format).format((Timestamp) value);里面的日期也会随之更改;

        JsonConfig jsonConfig = new JsonConfig();
        jsonConfig.setExcludes(new String[]{
         "invoice","creatorId", "modifyDate", "modifyId","modifyName","createDate","modifyDate","creatorName"
        });

jsonConfig.registerJsonValueProcessor(java.sql.Timestamp.class,new JsonValueProcessor() {
            private final String format="yyyy-MM-dd";
            public Object processObjectValue(String key, Object value,JsonConfig arg2){
              if(value==null)
                    return "";
              if (value instanceof Timestamp) {
                    String str = new SimpleDateFormat(format).format((Timestamp) value);
                    return str;
              }
                    return value.toString();
            }
            public Object processArrayValue(Object value, JsonConfig arg1){
                       return null;
            }
         });
        JSONArray json = JSONArray.fromObject(inventoryList,jsonConfig);

如果string无法满足你的需求,那么可以书写

package com.sinosoft.pmhy.util.conver;
import java.util.Date;

import org.apache.commons.lang.time.DateFormatUtils;

import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonBeanProcessor;

public class MyJsDateJsonBeanProcessor implements JsonBeanProcessor {
        public static String DEFAULT_DATE_PATTERN = "yyyy-MM-dd HH:mm";

        public static String processDate(Date date) {
                return DateFormatUtils.format(date, DEFAULT_DATE_PATTERN);
        }

        private String datePattern = null;

        public String getDatePattern() {
                if (datePattern == null) {
                        return DEFAULT_DATE_PATTERN;
                } else {
                        return datePattern;
                }
        }

        public void resetDatePattern() {
                datePattern = null;
        }

        public JSONObject processBean(Object bean, JsonConfig jsonConfig) {
                if (bean instanceof java.sql.Date) {
                        java.sql.Date d = (java.sql.Date) bean;

                        long time = d.getTime();
                        String pattern = getDatePattern();
                        String date = DateFormatUtils.format(time, pattern);
                        return makeJSONObject(date, time, pattern);
                }

                if (bean instanceof Date) {
                        Date d = (Date) bean;

                        long time = d.getTime();
                        String pattern = getDatePattern();
                        String date = DateFormatUtils.format(time, pattern);
                        return makeJSONObject(date, time, pattern);
                }

                return new JSONObject(true);
        }

        private static JSONObject makeJSONObject(String date, long time,
                        String pattern) {
                JSONObject jsonObject = new JSONObject();
                jsonObject.element("date", date);
                jsonObject.element("time", time);
                jsonObject.element("pattern", pattern);
                return jsonObject;
        }
}

这样的转换时间可以满足日期,和时间的获取

时间: 2024-10-31 11:29:09

Extjs中对日期的处理的相关文章

在Extjs中对日期的处理,以及在后端数据在SQL语句的判断处理

jsp页面可选择时间: { xtype : 'datefield', id : 'START_CREATION_DATE_', format : 'Y-m-d H:i:s', submitFormat : 'Y-m-d H:i:s', value : new Date(new Date().getFullYear(), new Date().getMonth(), '1'), fieldLabel : '开始时间' }, { xtype : 'datefield', id : 'END_CREA

FreeMarker中的日期时间处理

1. FreeMarker中的日期时间格式设置 FreeMarker中可以分别对date.time.datetime三种类型的日期时间设置格式,例如: config.setDateTimeFormat("yyyy-MM-dd HH:mm:ss"); config.setDateFormat("yyyy-MM-dd"); config.setTimeFormat("HH:mm:ss"); 当我们对一个页面变量使用 ?date ?time ?date

thymeleaf中的日期格式化

本篇介绍些thymeleaf中的日期格式化的方法: 1.用#dates.format来解决: <span th:text="${#dates.format(user.date, 'yyyy-MM-dd')}">4564546</span> 或者<span th:text="${#dates.format(billingForm.startTime,'yyyy-MM-dd HH:mm:ss')}">4564546</span&

ftp下载指定日期文件(文件名中含日期)

网上查了很多,但是执行都各种错误,然后自己研究了半天,整了个能用的 要求:FTP文件名中含日期 步骤:将一下代码保存为BAT脚本,配置定时任务即可 @echo offrem 计算指定天数之前的日期set DaysAgo=1rem 假设系统日期的格式为yyyy-mm-ddcall :DateToDays %date:~0,4% %date:~5,2% %date:~8,2% PassDaysset /a PassDays-=%DaysAgo%call :DaysToDate %PassDays%

ExtJS中TreeGrid的用法

如果您是第一次使用ExtJS的TreeGrid的话,我相信总会有一些小麻烦的,下面就来说一说ExtJS中TreeGrid的使用. 本人使用的ExtJS版本为4.0.7,并且使用了MVC模式,如果不了解ExtJS的MVC模式的话我个觉得还是有必要去学学的, 学完后你肯定会喜欢上的. 其实在ExtJS中并没有TreeGrid这么一个类,这个说法是从EasyUI中借用过来的,ExtJS中的TreeGrid功能已经合在了Ext.tree.Panel中. TreeGrid显示出来大概是这个样子: 下面是这

hive中的日期转换函数

1.unix时间戳转时间函数   语法: from_unixtime(bigintunixtime[, string format]) 返回值: string 说明: 转化UNIX时间戳(从1970-01-01 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式 举例: hive>selectfrom_unixtime(1323308943,'yyyyMMdd')fromdual; 20111208 2.获取当前时区的unix时间戳 ? 1 2 3 4 5 6 7 8 9 10 语法

EXTJS中grid的数据特殊显示,不同窗口的数据传递

//EXTJS中grid的数据特殊显示renderer : function(value, metaData, record, rowIndex, colIndex, store, view) { var USED_AMOUNT_ = 0; for (var i = 0; i < matMonthPlanHisList.length; i++) { if(matMonthPlanHisList[i].MAT_NO_ == record.get('MAT_NO_')){ USED_AMOUNT_

数据库中存储日期的字段类型到底应该用varchar还是datetime

将数据库中存储时间的数据类型改为varchar(),这时最好让这些时间是数据库中自动生成的(一个没有格式的输入也可能会导致输出错误),因为存储类型为varchar(),所以获取到的值也就被认为是一个字符串,直接将数据库中的时间字符串进行转化(这时那些转化函数是能识别数据库中的时间函数的),客户端的时间格式不再影响转换过程. 不过数据库中存储时间的类型如果为字符型也会带来一些麻烦: 数据库中的时间仅仅是用来显示.查找的,那么影响还不算大,但如果对时间字段进行一些算法如计算星期.DateDiff.D

php中的日期

1.在PHP中获取日期和时间 time()返回当前时间的 Unix 时间戳. getDate()返回日期/时间信息. gettimeofday()返回当前时间信息.date_sunrise()返回给定的日期与地点的日出时间.date_sunset():返回给定的日期与地点的日落时间. 2.将时间戳的格式转了 我们可以读懂的时间格式 date(string, [timestamp]); 3.将日期和时间转变成UNIX时间戳 mktime() 函数返回一个日期的 Unix 时间戳. 语法:mktim