java转换日期的工具类

jopen 11年前

         import java.sql.Timestamp;        import java.text.SimpleDateFormat;        import java.util.Calendar;        import java.util.Date;        import java.util.regex.Pattern;                import org.apache.commons.lang.StringUtils;        import org.apache.commons.logging.Log;        import org.apache.commons.logging.LogFactory;                public class DateUtils {            private static Log log = LogFactory.getLog(DateUtils.class);            public final static SimpleDateFormat dateMillTimeFormat = new SimpleDateFormat(                    "yyyyMMddHHmmssSSS");            public final static SimpleDateFormat dateTimeFormat = new SimpleDateFormat(                    "yyyy-MM-dd HH:mm:ss.SSS");            public final static java.util.regex.Pattern pattern = Pattern                    .compile("^[0-9]{4}[/-][0-9]{1,2}[/-][0-9]{1,2}( +[0-9]{2}(:[0-9]{2}(:[0-9]{2}\\.?[0-9]{0,3})?)?)?$");                    public synchronized static Date toDate(String date) {                Date d = null;                // 20110201==>yyyyMMdd                // 2011/01/01==>yyyy/MM/dd                // 2011-01-01==>yyyy-MM-dd                try {                    if (!pattern.matcher(date).matches()) {                        throw new Exception(date+" is not a date format.");                    }                    String rdate = date.replaceAll("[/ :.-]", "");                    if (rdate.length() < 8) {                        throw new Exception();                    } else {                        while (rdate.length() < 17) {                            rdate += "0";                        }                    }                    d = dateMillTimeFormat.parse(rdate);                } catch (Exception e) {                    log.error(date + " 日期格式錯誤.");                }                return d;            }                    public static Date toDate(Timestamp date) {                return date;            }                    public static Date toDate(Object date) {                Date d = null;                if (date instanceof Date) {                    d = (Date) date;                } else if (date instanceof String) {                    d = toDate((String) date);                }                return d;            }            public static Timestamp toTimeStamp(Object obj){                if (obj==null || StringUtils.isBlank(obj.toString())){                    return null;                }                Date date = toDate(obj);                return new Timestamp(date.getTime());            }            public synchronized static String format(Date date) {                return dateTimeFormat.format(date);            }                    public synchronized static String format(Timestamp date) {                return dateTimeFormat.format(date);            }            public static String format(Date date, String format) {                return new SimpleDateFormat(format).format(date);            }                    public synchronized static String format(Object date) {                String formatDate = null;                if (date instanceof Date) {                    formatDate = dateTimeFormat.format((Date) date);                }                return formatDate;            }                    public static void main(String[] args) {                System.out.println("1:" + DateUtils.toDate("2011"));                System.out.println("2:" + DateUtils.toDate("2011/12/20"));                System.out.println("3:" + DateUtils.toDate("2011/12/20 17:20:30"));                System.out.println("4:" + DateUtils.toDate("2011/12/20 17:20"));                System.out.println("5:"                        + DateUtils.toDate(new Timestamp(Calendar.getInstance()                                .getTime().getTime())));                System.out.println("6:"                        + DateUtils.format(new Timestamp(Calendar.getInstance()                                .getTime().getTime())));                        System.out.println("10:" + DateUtils.toDate("2010/12/01"));                System.out.println("11:" + DateUtils.toDate("2011-01-01"));                System.out.println("12:" + DateUtils.toDate("2010-10-11 15:20:15"));                System.out.println("13:" + DateUtils.toDate("2010-10-11 15:20"));                System.out.println("14:" + DateUtils.toDate("2010-10-11 15"));                System.out.println("15:" + DateUtils.toDate("2010-10-11 15:20:15.235"));                System.out.println("16:" + DateUtils.toDate("2010-10-11 15:20:15"));                System.out.println("17:" + DateUtils.toDate("2010-10-11 15:20:15"));                System.out.println("18:" + DateUtils.toDate("15:12:30"));                System.out.println("19:" + DateUtils.toDate("15:12:30.563"));            }        }