package no.met.metadataeditor; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimeZone; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.convert.Converter; import javax.faces.convert.ConverterException; import javax.faces.convert.FacesConverter; @FacesConverter("no.met.metadataeditor.DateTimeConverter") public class DateTimeConverter implements Converter { public static final String FROM_UI_FORMAT = "yyyy-MM-dd HH:mm"; public static final String FROM_XML_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'"; private static DateFormat fromUIFormat = new SimpleDateFormat(FROM_UI_FORMAT); private static DateFormat fromXMLFormat = new SimpleDateFormat(FROM_XML_FORMAT); static { fromUIFormat.setTimeZone(TimeZone.getTimeZone("UTC")); fromXMLFormat.setTimeZone(TimeZone.getTimeZone("UTC")); } @Override public Object getAsObject(FacesContext arg0, UIComponent arg1, String dateString) throws ConverterException { try { Date uiDate = fromUIFormat.parse(dateString); return fromXMLFormat.format(uiDate); } catch (ParseException e) { return dateString; } } @Override public String getAsString(FacesContext arg0, UIComponent arg1, Object value) throws ConverterException { if( value instanceof String){ String dateString = (String) value; try { Date uiDate = fromXMLFormat.parse(dateString); return fromUIFormat.format(uiDate); } catch (ParseException e) { return dateString; } } return value.toString(); } }