æ ¸å¿ææ³
åä¸ä¸ªèªå®ä¹çç±»ï¼ç»§æ¿java.text.SimpleDateFormatï¼èªå·±å¤ç两ç§æ¥æçæ ¼å¼
package util;
import java.text.AttributedCharacterIterator;
import java.text.DateFormatSymbols;
import java.text.FieldPosition;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.lang3.StringUtils;
import com.fasterxml.jackson.databind.ObjectMapper;
import util.Demo;
/**
* @description: <br/>
* @version: 1<br/>
* @package com.momfo.manger.util.MyDateFormat.java
* @author YangPu
* @date 2017å¹´4æ24æ¥ ä¸å4:39:12
*/
public class MyDateFormat extends SimpleDateFormat {
private static final long serialVersionUID = L;
private final static String pattern1 = "yyyy-MM-dd";
private final static String pattern2 = "yyyy-MM-dd HH:mm:ss";
// å¹´ææ¥çæ ¼å¼å
private static SimpleDateFormat ymd = new SimpleDateFormat(pattern1);
// å¹´ææ¥æ¶åç§çæ ¼å¼å
// é»è®¤çæ ¼å¼å
private static SimpleDateFormat ymdhms = new SimpleDateFormat(pattern2);
public static void main(String[] args) throws Exception {
String d1 = "2017-01-01";
String d2 = "2017-01-01 12:12:12";
ObjectMapper om = new ObjectMapper();
String json0 = "{\"my09\":\"2017-01-01\",\"my091\":\"2017-01-01\"}";
String json1 = "{\"my09\":\"2017-01-01\",\"my091\":\"2017-01-01 08:00:00\"}";
String json2 = "{\"my09\":\"2017-01-01 08:00:00\",\"my091\":\"2017-01-01\"}";
String json3 = "{\"my09\":\"2017-01-01 08:00:00\",\"my091\":\"2017-01-01 08:00:00\"}";
om.setDateFormat(new MyDateFormat());
Demo d = null;
d = om.readValue(json0, Demo.class);
System.out.println(om.writeValueAsString(d));
d = om.readValue(json1, Demo.class);
System.out.println(om.writeValueAsString(d));
d = om.readValue(json2, Demo.class);
System.out.println(om.writeValueAsString(d));
d = om.readValue(json3, Demo.class);
System.out.println(om.writeValueAsString(d));
}
// é»è®¤çæ ¼å¼å
public MyDateFormat() {
this(pattern2);
}
public MyDateFormat(String pattern) {
super(pattern);
}
public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition pos) {
System.out.println("format");
if (date instanceof java.sql.Date) {
return ymd.format(date, toAppendTo, pos);
} else if (date instanceof java.sql.Timestamp) {
return ymdhms.format(date, toAppendTo, pos);
}
// å¯ä»¥èªå®ä¹èªå·±çæ°æ®æ ¼å¼
return ymdhms.format(date, toAppendTo, pos);
}
@Override
public void set2DigitYearStart(Date startDate) {
System.out.println("set2DigitYearStart");
super.set2DigitYearStart(startDate);
}
@Override
public Date get2DigitYearStart() {
System.out.println("get2DigitYearStart");
return super.get2DigitYearStart();
}
@Override
public AttributedCharacterIterator formatToCharacterIterator(Object obj) {
System.out.println("formatToCharacterIterator");
return super.formatToCharacterIterator(obj);
}
@Override
public Date parse(String text, ParsePosition pos) {
System.out.println("parse");
if (StringUtils.isNotEmpty(text)) {
// 2017-01-01 12:13:14
if (text.matches("\\d{4}-\\d{1,2}-\\d{1,2} \\d{1,2}:\\d{1,2}:\\d{1,2}")) {
return ymdhms.parse(text, pos);
} else if (text.matches("\\d{4}-\\d{1,2}-\\d{1,2}")) {
// 2017-01-01
return ymd.parse(text, pos);
}
// å¯ä»¥èªå®ä¹èªå·±çæ°æ®æ ¼å¼
}
return super.parse(text, pos);
}
@Override
public String toPattern() {
System.out.println("toPattern");
return super.toPattern();
}
@Override
public String toLocalizedPattern() {
System.out.println("toLocalizedPattern");
return super.toLocalizedPattern();
}
@Override
public void applyPattern(String pattern) {
System.out.println("applyPattern");
super.applyPattern(pattern);
}
@Override
public void applyLocalizedPattern(String pattern) {
System.out.println("applyLocalizedPattern");
super.applyLocalizedPattern(pattern);
}
@Override
public DateFormatSymbols getDateFormatSymbols() {
System.out.println("getDateFormatSymbols");
return super.getDateFormatSymbols();
}
@Override
public void setDateFormatSymbols(DateFormatSymbols newFormatSymbols) {
System.out.println("setDateFormatSymbols");
super.setDateFormatSymbols(newFormatSymbols);
}
@Override
public Object clone() {
return super.clone();
}
@Override
public int hashCode() {
return super.hashCode();
}
@Override
public boolean equals(Object obj) {
return super.equals(obj);
}
}
**è¾
å©ç±»**
package util;
import java.io.Serializable;
import java.sql.Date;
import java.sql.Timestamp;
/**
* @Model<br>
* @classNameï¼ProjectInfo<br>
* @auto-generated<br>
*/
public class Demo implements Serializable {
private static final long serialVersionUID = L;
// @JsonFormat(pattern = "yyyy-MM-dd")
private Date my09;
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Timestamp my091;
public Date getMy09() {
return my09;
}
public Timestamp getMy091() {
return my091;
}
public void setMy091(Timestamp my091) {
this.my091 = my091;
}
public void setMy09(Date my09) {
this.my09 = my09;
}
}
**springçé
ç½®æ件**
<mvc:annotation-driven validator="validator" conversion-service="conversionService">
<mvc:message-converters >
<ref bean="mappingJackson2HttpMessageConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
<!--对ajaxæ交,æ°æ®å°è£
å°requestBodyä¸ææ-->
<bean id="mappingJackson2HttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
<bean class="com.fasterxml.jackson.databind.ObjectMapper">
<property name="dateFormat">
<bean class="util.MyDateFormat">
</bean>
</property>
</bean>
</property>
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-</value>
<value>application/json;charset=UTF-</value>
</list>
</property>
</bean>
<!--è¿ç§å¯¹form表åæ交,getæ交ææ-->
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="util.DateConverter" />
<bean class="util.TimestampConverter" />
</list>
</property>
</bean>
æ»ç»
使ç¨è¿ç§æ¹å¼ï¼å°±ä¸å¿ å¨æ¯ä¸ä¸ªmodelä¸å注解æ¥å®ä¹dateçæ ¼å¼ï¼
ç³»ç»å°±ç´æ¥å®ä¹ï¼java.sql.dateæ ¼å¼ä¸ºï¼yyyy-MM-dd
ç³»ç»å°±ç´æ¥å®ä¹ï¼java.sql.Timestampæ ¼å¼ä¸ºï¼yyyy-MM-dd HH:mm:ss
åªéè¦å¨modelä¸å®ä¹ä¸åçç±»åï¼å°±ç¡®å®äºï¼æ¥æçæ ¼å¼