/** * Copyright (c)2010-2011 Enterprise Website Content Management System(EWCMS), All rights reserved. * EWCMS PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * http://www.ewcms.com */ package com.ewcms.common.convert; import java.text.ParseException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * 转换成日期(java.util.Date) * * <p>缺省日期格式为<code>yyyy-MM-dd OR yyyy-MM-dd HH:mm:ss</code></p> * * @author WangWei */ class DateConvert implements ConvertDateable<Date> { private final static DateFormat DEFAULT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private final static DateFormat SHORT_DEFAULT = new SimpleDateFormat("yyyy-MM-dd"); private final static int SHORT_LENGTH = 10; private SimpleDateFormat format; @Override public void setFormat(String format) { this.format = new SimpleDateFormat(format); } private boolean isShortFormat(String value) { return value.trim().length() <= SHORT_LENGTH ? true : false; } @Override public Date parse(String value) throws ConvertException { try { if (value == null || value.equals("")){ return SHORT_DEFAULT.parse(SHORT_DEFAULT.format(new Date(Calendar.getInstance().getTime().getTime()))); } if (format != null) { return format.parse(value); } if (isShortFormat(value)) { return SHORT_DEFAULT.parse(value); } else { return DEFAULT.parse(value); } } catch (ParseException e) { throw new ConvertException(e); } } @Override public String parseString(Date value) { if(format != null){ return format.format(value); }else{ return DEFAULT.format(value); } } }