package com.taobao.tddl.common.utils.convertor; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import com.taobao.tddl.common.utils.DateUtils; /** * string <-> Date/Calendar 之间的转化 * * @author jianghang 2011-5-26 上午09:50:31 */ public class StringAndDateConvertor { public static final String TIMESTAMP_FORMAT = "yyyy-MM-dd HH:mm:ss"; public static final String DATE_FORMAT = "yyyy-MM-dd"; public static final String TIME_FORMAT = "HH:mm:ss"; /** * string -> Date */ public static class StringToDate extends AbastactConvertor { @Override public Object convert(Object src, Class destClass) { if (String.class.isInstance(src)) { // 必须是字符串 return DateUtils.str_to_time((String) src); } throw new ConvertorException("Unsupported convert: [" + src + "," + destClass.getName() + "]"); } } /** * string -> sql Date */ public static class StringToSqlDate extends AbastactConvertor { @Override public Object convert(Object src, Class destClass) { if (String.class.isInstance(src)) { // 必须是字符串 return ConvertorHelper.dateToSql.convert(DateUtils.str_to_time((String) src), destClass); } throw new ConvertorException("Unsupported convert: [" + src + "," + destClass.getName() + "]"); } } /** * string-> Calendar */ public static class StringToCalendar extends StringToDate { @Override public Object convert(Object src, Class destClass) { if (String.class.isInstance(src)) { // 必须是字符串 Date dest = (Date) super.convert(src, Date.class); Calendar result = new GregorianCalendar(); result.setTime(dest); return result; } throw new ConvertorException("Unsupported convert: [" + src + "," + destClass.getName() + "]"); } } /** * Date -> string(格式为:"2010-10-01") */ public static class SqlDateToString extends AbastactConvertor { @Override public Object convert(Object src, Class destClass) { if (Date.class.isInstance(src)) { // 必须是Date对象 return new SimpleDateFormat(DATE_FORMAT).format((Date) src); } throw new ConvertorException("Unsupported convert: [" + src + "," + destClass.getName() + "]"); } } /** * Date -> string(格式为:"00:00:00") */ public static class SqlTimeToString extends AbastactConvertor { @Override public Object convert(Object src, Class destClass) { if (Date.class.isInstance(src)) { // 必须是Date对象 return new SimpleDateFormat(TIME_FORMAT).format((Date) src); } throw new ConvertorException("Unsupported convert: [" + src + "," + destClass.getName() + "]"); } } /** * Date -> string(格式为:"2010-10-01 00:00:00") */ public static class SqlTimestampToString extends AbastactConvertor { @Override public Object convert(Object src, Class destClass) { if (Date.class.isInstance(src)) { // 必须是Date对象 return new SimpleDateFormat(TIMESTAMP_FORMAT).format((Date) src); } throw new ConvertorException("Unsupported convert: [" + src + "," + destClass.getName() + "]"); } } /** * Calendar -> string(格式为:"2010-10-01") */ public static class CalendarToString extends AbastactConvertor { @Override public Object convert(Object src, Class destClass) { if (Calendar.class.isInstance(src)) { // 必须是Date对象 return new SimpleDateFormat(TIMESTAMP_FORMAT).format(((Calendar) src).getTime()); } throw new ConvertorException("Unsupported convert: [" + src + "," + destClass.getName() + "]"); } } }