package com.sy.utils; import com.thoughtworks.xstream.converters.ConversionException; import com.thoughtworks.xstream.converters.basic.AbstractSingleValueConverter; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateTimeConverter extends AbstractSingleValueConverter { private static final DateFormat DATE = new SimpleDateFormat("yyyy-MM-dd"); private static final DateFormat DATETIME = new SimpleDateFormat("yyyyMMddHHmmss"); private static final DateFormat DATETIME_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private static final DateFormat DEFAULT_DATEFORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); private static final SimpleDateFormat date = new SimpleDateFormat("yyyyy-MM-dd"); public boolean canConvert(Class type) { return type.equals(Date.class); } public Object fromString(String str) { try { if(str.length()>0) { if(str.indexOf("T")>0) { return DEFAULT_DATEFORMAT.parseObject(str); } if(str.indexOf("-")>0 && str.indexOf(":")>0) { return DATETIME_FORMAT.parseObject(str); } if(str.length()==14) { return DATETIME.parseObject(str); } if(str.length()==10) { return DATE.parseObject(str); } if(str.length()>14){ str= str.substring(0,15); return DATETIME.parseObject(str); } }else { return null; } } catch (ParseException e) { e.printStackTrace(); } throw new ConversionException("Cannot parse date " + str); } public static String getFormat() { return dateFormat.format(new Date()); } public String dateFormat() { return dateFormat.format(new Date()); } public String dateTimeFormat() { return DATETIME_FORMAT.format(new Date()); } public static String getDay() { return date.format(new Date()); } }