Skip to content

Commit 31f47e5

Browse files
author
Dobler Patrick BIT
committed
Issue FasterXML#21: DateTimeSerializer use the configured time zone
1 parent 91f25c0 commit 31f47e5

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

src/main/java/com/fasterxml/jackson/datatype/joda/ser/DateTimeSerializer.java

+13-1
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,25 @@
99
import com.fasterxml.jackson.databind.JsonNode;
1010
import com.fasterxml.jackson.databind.SerializationFeature;
1111
import com.fasterxml.jackson.databind.SerializerProvider;
12+
import org.joda.time.DateTimeZone;
13+
import org.joda.time.format.DateTimeFormatter;
14+
import org.joda.time.format.ISODateTimeFormat;
1215

1316
public final class DateTimeSerializer
1417
extends JodaSerializerBase<DateTime>
1518
{
1619
public DateTimeSerializer() { super(DateTime.class); }
1720

21+
private DateTimeFormatter format = null;
22+
1823
@Override
1924
public void serialize(DateTime value, JsonGenerator jgen, SerializerProvider provider)
2025
throws IOException, JsonGenerationException
2126
{
2227
if (provider.isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)) {
2328
jgen.writeNumber(value.getMillis());
2429
} else {
25-
jgen.writeString(value.toString());
30+
jgen.writeString(getDateTimeFormatter(provider).print(value));
2631
}
2732
}
2833

@@ -32,4 +37,11 @@ public JsonNode getSchema(SerializerProvider provider, java.lang.reflect.Type ty
3237
return createSchemaNode(provider.isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
3338
? "number" : "string", true);
3439
}
40+
41+
private DateTimeFormatter getDateTimeFormatter(SerializerProvider provider) {
42+
if (format == null) {
43+
format = ISODateTimeFormat.dateTime().withZone(DateTimeZone.forTimeZone(provider.getTimeZone()));
44+
}
45+
return format;
46+
}
3547
}

0 commit comments

Comments
 (0)