diff --git a/src/main/java/org/javawebstack/abstractdata/mapper/DefaultMappers.java b/src/main/java/org/javawebstack/abstractdata/mapper/DefaultMappers.java index 5e5d098..deb6cbc 100644 --- a/src/main/java/org/javawebstack/abstractdata/mapper/DefaultMappers.java +++ b/src/main/java/org/javawebstack/abstractdata/mapper/DefaultMappers.java @@ -9,6 +9,7 @@ import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; +import java.sql.Time; import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -265,6 +266,8 @@ public AbstractElement toAbstract(MapperContext context, Object value) throws Ma return new AbstractPrimitive(time); } java.text.DateFormat dateFormat = (df != null && df.value().length() > 0) ? new SimpleDateFormat(df.value()) : context.getMapper().getDateFormat(); + if (df != null && df.timezone().length() > 0) + dateFormat.setTimeZone(TimeZone.getTimeZone(df.timezone())); return new AbstractPrimitive(dateFormat.format((Date) value)); } return null; @@ -281,6 +284,8 @@ public Object fromAbstract(MapperContext context, AbstractElement element, Class date = new Date(time); } else { java.text.DateFormat dateFormat = (df != null && df.value().length() > 0) ? new SimpleDateFormat(df.value()) : context.getMapper().getDateFormat(); + if (df != null && df.timezone().length() > 0) + dateFormat.setTimeZone(TimeZone.getTimeZone(df.timezone())); date = dateFormat.parse(element.string(context.getMapper().isStrict())); } if(type.equals(Date.class)) diff --git a/src/main/java/org/javawebstack/abstractdata/mapper/annotation/DateFormat.java b/src/main/java/org/javawebstack/abstractdata/mapper/annotation/DateFormat.java index fd3b8b8..bcedb86 100644 --- a/src/main/java/org/javawebstack/abstractdata/mapper/annotation/DateFormat.java +++ b/src/main/java/org/javawebstack/abstractdata/mapper/annotation/DateFormat.java @@ -3,6 +3,7 @@ public @interface DateFormat { String value() default ""; + String timezone() default ""; boolean epoch() default false; boolean millis() default false;