- 浏览: 958721 次
- 性别:
- 来自: 江西上饶
文章分类
- 全部博客 (460)
- p.spring (56)
- p.maven (20)
- p.ant (17)
- p.jee (18)
- p.jse (33)
- p.ofbiz (31)
- p.软件工程 (8)
- p.struts2 (5)
- p.hibernate (5)
- linux (25)
- 设计模式 (2)
- p.javascript (11)
- 硬件 (1)
- p.jsp (2)
- p.windows批处理 (1)
- 操作系统问题 (5)
- 算法 (1)
- p.mysql (7)
- p.sql (5)
- p.c (1)
- google产品 (0)
- 内存 (1)
- p.struts (1)
- p.freemarker (7)
- p.css (4)
- p.log4j (10)
- p.html (3)
- 淘宝产品 (0)
- 其他 (3)
- 编译器 (0)
- svn (4)
- p.spring.security (11)
- 图形 (0)
- p.xml (1)
- p.ssh (0)
- p.jquery (4)
- p.jdbc (3)
- p.flex (0)
- p.c++ (0)
- p.c#Net (0)
- p.assembly (0)
- p.sqlserver (0)
- p.其他 (3)
- p.webwork (21)
- p.wap (12)
- p.cglib (1)
- p.jee服务器 (11)
- windows (2)
- p.iphone (1)
- p.java.分布式与集群 (2)
- p.ibatis (16)
- p.eclipse (5)
- 架构 (2)
- http协议 (5)
- 我的个人标准 (2)
- 多线程 (1)
- 奇怪问题 (5)
- p.jira (13)
- p.httpclient (1)
- 服务器.apache (11)
- 安全防范 (1)
- p.PODAM (1)
- p.junit (16)
- fop (2)
- 硬盘安装 (1)
- powerdesigner (0)
- 单元测试 (1)
- apache commons (4)
- tomcat+apache集群 (10)
- 各类诡辩 (1)
- 安卓 (8)
- qvod (1)
- java编程基础知识考试考点及答案 (0)
- 工作总结 (4)
- oracle (0)
- spring的util工具 (3)
- json (2)
- maven (3)
- jms (19)
- p.bat (3)
- hadoop (2)
- git (3)
- nginx (1)
- p.移动开发 (1)
- shiro (3)
- 游戏破解 (1)
- react-native (7)
- ios开发 (1)
- webmagic (6)
- socks5 (1)
最新评论
-
weituotian:
说的不好,没人看的
公司系统中的菜单功能和权限功能 -
石不易:
非常详细的注解~
绑定端口和IP,Listen 与VirtualHost指令 -
spring_springmvc:
spring mvc demo教程源代码下载,地址:http: ...
spring mvc -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装 -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装
经过调试,发现最后转换器会进入com.opensymphony.xwork.util.XWorkBasicConverter类(xwork.jar包)的对应的doConvertToDate方法,该方法内容:
private Object doConvertToDate(Map context, Object value, Class toType) {
Date result = null;
if (value instanceof String && value != null && ((String)value).length() > 0) {
String sa = (String) value;
Locale locale = getLocale(context);
DateFormat df = null;
if (java.sql.Time.class == toType) {
df = DateFormat.getTimeInstance(DateFormat.MEDIUM, locale);
} else if (java.sql.Timestamp.class == toType) {
Date check = null;
SimpleDateFormat dtfmt = (SimpleDateFormat) DateFormat.getDateTimeInstance(DateFormat.SHORT,
DateFormat.MEDIUM,
locale);
SimpleDateFormat fullfmt = new SimpleDateFormat(dtfmt.toPattern() + MILLISECOND_FORMAT,
locale);
SimpleDateFormat dfmt = (SimpleDateFormat) DateFormat.getDateInstance(DateFormat.SHORT,
locale);
SimpleDateFormat rfc3339Format = new SimpleDateFormat(RFC3339_FORMAT);
SimpleDateFormat[] fmts = {fullfmt, dtfmt, dfmt, rfc3339Format};
for (int i = 0; i < fmts.length; i++) {
try {
//可以发现这里它会使用上面四种格式进行格式化(格式化失败进入异常),因此只有一个格式化会成功。我在页面中使用的<ww:datepicker name="act.actDate" label="活动时间"
format="%Y-%m-%d %H:%M" showstime="24">
</ww:datepicker>
只会被第三个格式化,而第三个格式化会被切去时间,所有出现了精度问题。
check = fmts[i].parse(sa);
df = fmts[i];
if (check != null) {
break;
}
} catch (ParseException ignore) {
}
}
} else if(java.util.Date.class == toType) {
Date check = null;
SimpleDateFormat d1 = (SimpleDateFormat)DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG, locale);
SimpleDateFormat d2 = (SimpleDateFormat)DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM, locale);
SimpleDateFormat d3 = (SimpleDateFormat)DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, locale);
SimpleDateFormat rfc3339Format = new SimpleDateFormat(RFC3339_FORMAT);
SimpleDateFormat[] dfs = {d1, d2, d3, rfc3339Format}; //added RFC 3339 date format (XW-473)
for (int i = 0; i < dfs.length; i++) {
try {
check = dfs[i].parse(sa);
df = dfs[i];
if (check != null) {
break;
}
}
catch (ParseException ignore) {
}
}
}
//final fallback for dates without time
if (df == null){
df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
}
try {
df.setLenient(false); // let's use strict parsing (XW-341)
result = df.parse(sa);
if (! (Date.class == toType)) {
try {
Constructor constructor = toType.getConstructor(new Class[]{long.class});
return constructor.newInstance(new Object[]{new Long(result.getTime())});
} catch (Exception e) {
throw new XworkException("Couldn't create class " + toType + " using default (long) constructor", e);
}
}
} catch (ParseException e) {
throw new XworkException("Could not parse date", e);
}
} else if (Date.class.isAssignableFrom(value.getClass())) {
result = (Date) value;
}
return result;
}
private Object doConvertToDate(Map context, Object value, Class toType) {
Date result = null;
if (value instanceof String && value != null && ((String)value).length() > 0) {
String sa = (String) value;
Locale locale = getLocale(context);
DateFormat df = null;
if (java.sql.Time.class == toType) {
df = DateFormat.getTimeInstance(DateFormat.MEDIUM, locale);
} else if (java.sql.Timestamp.class == toType) {
Date check = null;
SimpleDateFormat dtfmt = (SimpleDateFormat) DateFormat.getDateTimeInstance(DateFormat.SHORT,
DateFormat.MEDIUM,
locale);
SimpleDateFormat fullfmt = new SimpleDateFormat(dtfmt.toPattern() + MILLISECOND_FORMAT,
locale);
SimpleDateFormat dfmt = (SimpleDateFormat) DateFormat.getDateInstance(DateFormat.SHORT,
locale);
SimpleDateFormat rfc3339Format = new SimpleDateFormat(RFC3339_FORMAT);
SimpleDateFormat[] fmts = {fullfmt, dtfmt, dfmt, rfc3339Format};
for (int i = 0; i < fmts.length; i++) {
try {
//可以发现这里它会使用上面四种格式进行格式化(格式化失败进入异常),因此只有一个格式化会成功。我在页面中使用的<ww:datepicker name="act.actDate" label="活动时间"
format="%Y-%m-%d %H:%M" showstime="24">
</ww:datepicker>
只会被第三个格式化,而第三个格式化会被切去时间,所有出现了精度问题。
check = fmts[i].parse(sa);
df = fmts[i];
if (check != null) {
break;
}
} catch (ParseException ignore) {
}
}
} else if(java.util.Date.class == toType) {
Date check = null;
SimpleDateFormat d1 = (SimpleDateFormat)DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG, locale);
SimpleDateFormat d2 = (SimpleDateFormat)DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM, locale);
SimpleDateFormat d3 = (SimpleDateFormat)DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, locale);
SimpleDateFormat rfc3339Format = new SimpleDateFormat(RFC3339_FORMAT);
SimpleDateFormat[] dfs = {d1, d2, d3, rfc3339Format}; //added RFC 3339 date format (XW-473)
for (int i = 0; i < dfs.length; i++) {
try {
check = dfs[i].parse(sa);
df = dfs[i];
if (check != null) {
break;
}
}
catch (ParseException ignore) {
}
}
}
//final fallback for dates without time
if (df == null){
df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
}
try {
df.setLenient(false); // let's use strict parsing (XW-341)
result = df.parse(sa);
if (! (Date.class == toType)) {
try {
Constructor constructor = toType.getConstructor(new Class[]{long.class});
return constructor.newInstance(new Object[]{new Long(result.getTime())});
} catch (Exception e) {
throw new XworkException("Couldn't create class " + toType + " using default (long) constructor", e);
}
}
} catch (ParseException e) {
throw new XworkException("Could not parse date", e);
}
} else if (Date.class.isAssignableFrom(value.getClass())) {
result = (Date) value;
}
return result;
}
发表评论
-
jsp 中 自定义Map 调用国际化
2013-01-30 11:10 1165在jsp中,自动以map,如 #{"1": ... -
s:set 定义一个map并从map取出vlaue
2012-12-19 11:30 11381.方法一,先使用set <td><s:s ... -
标签的样式(去除tr等布局元素)
2012-11-15 17:36 1297struts2中theme属性包括xhtml,html,sim ... -
注解验证
2011-04-27 18:28 2131http://www.opensymphony.com/web ... -
freemarker
2011-03-27 23:37 14241.freemarker.properties locale= ... -
ognl
2011-03-27 19:03 1245ognl是object graph(图表) navigaton ... -
文件上传,下载
2011-03-27 13:32 1354关于和文件上传的配置,查看webwork.properties ... -
异常处理
2011-03-26 17:48 1064在默认配置中 <interceptor-stack na ... -
action配置
2011-03-26 17:26 1191普通配置不说明 动态方法调用: 如我们使用同一个表单,当用户 ... -
访问servlet api
2011-03-26 16:44 1082首先获取ActionContext ActionContext ... -
处理结果(result)和默认action
2011-03-26 16:39 1488默认action,在package元素 ... -
动态方法调用
2011-03-22 23:53 1037struts.enable.DynamicMethodInvo ... -
转换器的错误处理
2011-03-22 22:28 1165conversionError拦截器。如果有错误,回到了inp ... -
类转换器
2011-03-22 21:40 963如我们通过在action定义user,然后user.name, ... -
国际化
2011-03-22 21:27 1288保存一个文件到classpath下面,如message.pro ... -
验证框架
2011-03-22 21:21 1140重写validate方法,页面中使用了ww:form标签,已经 ... -
Array、List、Map
2011-03-22 18:41 1428数组方式,如我们有两 ... -
webwork.properties配置文件的属性
2011-03-16 16:44 13451.webwork.configuration=com.ope ... -
主要配置文件
2011-03-16 15:32 1182文件可选位置(相对于webapp)用途web.xml否/WEB ... -
webwork的过滤器
2011-03-15 10:40 1897在webwork的架构中,标准过滤器推荐从ActionCont ...
相关推荐
在Oracle数据库中,`TIMESTAMP`与`DATE`两种数据类型是用于存储日期和时间信息的关键组成部分,但它们之间存在显著的区别,特别是在处理时间和精度方面。本文将深入探讨这两种数据类型的特点,以及如何在实际应用中...
本文将深入探讨MySQL数据库中的时间类型以及它们在Java编程语言中相对应的数据类型,以及如何在两者之间进行转换。 MySQL数据库提供了多种时间类型来处理日期和时间数据: 1. **DATE**:这个类型仅存储日期,格式...
Oracle数据库中的`DATE`和`TIMESTAMP`是两种常见的日期和时间数据类型,它们在处理时间信息时有着不同的特性和用途。 首先,`DATE`数据类型是我们最常使用的,它可以存储日期和时间,包括世纪、年、月、日、小时、...
为了解决DATE类型的精度问题,Oracle引入了TIMESTAMP数据类型,它不仅包含DATE的所有信息,还增加了微秒或纳秒级别的精度。这使得TIMESTAMP能够区分在同一秒内发生的事件。例如,`SELECT CAST(date1 AS TIMESTAMP) ...
与`java.util.Date`相比,Timestamp提供了更高的精度(1纳秒),并且可以存储时区信息。 - 在数据库中,Timestamp通常用来记录数据的创建或修改时间,以保持审计跟踪或实现版本控制。 2. **Hibernate中的Timestamp...
### MySQL时间类型详解:datetime、bigint、timestamp 在MySQL中,根据不同的应用场景和需求,可以选择多种方式来存储日期和时间信息。本篇文章将详细介绍三种常用的时间类型:`datetime`、`bigint` 和 `timestamp`...
1. **时间精度**:Python 的 `datetime` 类默认支持微秒级别的精度,但在实际应用中,需要注意前端 JavaScript 中的 `Date.now()` 函数返回的是毫秒级的时间戳。因此,在进行跨平台的时间戳传递时要注意精度转换。 ...
Kettle支持多种数据类型,其中包括时间戳(Timestamp)。在Kettle的步骤中,如"表输入"(Table Input)、"CSV文件输入"(CSV File Input)等,可以自动识别并处理源数据中的时间戳字段。通过"字段映射"(Field ...
例如,在Python中,可以使用`datetime`模块的`timestamp()`和`fromtimestamp()`方法进行转换,同时,`datetime.datetime.now().microsecond`可以获取当前时间的微秒部分,从而达到毫秒级别的精度。 在Java中,`java...
接着通过`TO_TIMESTAMP`函数将字符串格式的日期时间转换成`TIMESTAMP`类型的数据并插入到表中: ```sql INSERT INTO test VALUES ( TO_TIMESTAMP('2006-01-01 12:10:10.1', 'YYYY-MM-DD HH24:MI:SS.FF'), TO_...
Oracle的DATE类型是最常用的时间类型,它可以存储日期和时间信息,包括年、月、日、小时、分钟和秒。值得注意的是,尽管名为DATE,但它实际上包含了日期和时间两部分。日期部分的范围是从公元前4712年1月1日到公元...
在 Java 中,日期时间类型对应的是 java.sql.Date、java.sql.Time、java.sql.Timestamp 等类型。在 MySql 中,日期时间类型对应的是 DATE、TIME、DATETIME、TIMESTAMP 等类型。其中,DATE 类型用于存储日期,TIME ...
- Oracle数据库提供了多种日期时间类型,包括 DATE、TIMESTAMP、TIMESTAMP WITH TIME ZONE 和 TIMESTAMP WITH LOCAL TIME ZONE。 - DATE 类型包含世纪、年、月、日、时、分、秒信息。 - TIMESTAMP 类型是 DATE 的...
- TIME: 对应 Java 的 Time 类型,但 Oracle9i 中没有单独的时间类型,通常用 DATE 类型表示。 - BLOB: 对应 Java 的 Object 类型,用于存储二进制大数据。 2. Java 数据类型: - Java 的基本数据类型如 byte, ...
在选择合适的日期和时间类型时,需要考虑数据的精度需求、存储空间以及可能的日期范围。同时,理解这些类型在不同情况下的表现对于优化数据库设计和提高查询效率至关重要。在实际应用中,根据业务需求灵活选择和使用...
日期时间类型包括 date、datetime 和 timestamp 等。字符串类型包括 char、varchar 和 text 等。 在 Java 中,对应 MySQL 的数值类型可以使用基本数据类型,例如 int、long、float 和 double 等。对应日期时间类型...
MySQL数据库在处理日期和时间数据时提供了多种数据类型,包括日期类型和时间类型。这些数据类型的选择对于数据库设计和性能优化至关重要。以下是关于MySQL日期和时间类型的详细说明: 日期类型: 1. **datetime**:...
在Oracle数据库中,`TIMESTAMP` 是一种用于存储日期和时间数据类型的字段,与传统的`DATE`类型相比,它的精度更高,能够精确到小数秒。`TIMESTAMP` 类型的精度可设置为 0 到 9 位,缺省情况下是 6 位,这意味着它...