package com.github.ltsopensource.admin.web.support; import com.github.ltsopensource.core.commons.utils.DateUtils; import org.springframework.util.StringUtils; import java.beans.PropertyEditorSupport; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** * Date转换器 * Robert HG (254963746@qq.com) on 6/5/15. */ public class DateEditor extends PropertyEditorSupport { // private static final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd"); private static final DateFormat TIME_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private DateFormat dateFormat; private boolean allowEmpty = true; public DateEditor() { } public DateEditor(DateFormat dateFormat) { this.dateFormat = dateFormat; } public DateEditor(DateFormat dateFormat, boolean allowEmpty) { this.dateFormat = dateFormat; this.allowEmpty = allowEmpty; } /** * Parse the Date from the given text, using the specified DateFormat. */ @Override public void setAsText(String text) throws IllegalArgumentException { if (this.allowEmpty && !StringUtils.hasText(text)) { // Treat empty String as null value. setValue(null); } else { try { if (this.dateFormat != null) setValue(this.dateFormat.parse(text)); else { setValue(DateUtils.parse(text)); } } catch (ParseException ex) { throw new IllegalArgumentException("Could not parse date: " + ex.getMessage(), ex); } } } /** * Format the Date as String, using the specified DateFormat. */ @Override public String getAsText() { Date value = (Date) getValue(); DateFormat dateFormat = this.dateFormat; if (dateFormat == null) dateFormat = TIME_FORMAT; return (value != null ? dateFormat.format(value) : ""); } }