Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/api/GsonUTCDateAdapter.java')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/api/GsonUTCDateAdapter.java41
1 files changed, 41 insertions, 0 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/api/GsonUTCDateAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/api/GsonUTCDateAdapter.java
new file mode 100644
index 000000000..c4273c7a8
--- /dev/null
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/api/GsonUTCDateAdapter.java
@@ -0,0 +1,41 @@
+package it.niedermann.nextcloud.deck.api;
+
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParseException;
+import com.google.gson.JsonPrimitive;
+import com.google.gson.JsonSerializationContext;
+import com.google.gson.JsonSerializer;
+
+import java.lang.reflect.Type;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+import java.util.TimeZone;
+
+public class GsonUTCDateAdapter implements JsonSerializer<Date>, JsonDeserializer<Date> {
+
+ private final DateFormat dateFormat;
+
+ public GsonUTCDateAdapter() {
+ //This is the format I need
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
+ //This is the key line which converts the date to UTC which cannot be accessed with the default serializer
+ dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
+ }
+
+ @Override public synchronized JsonElement serialize(Date date, Type type, JsonSerializationContext jsonSerializationContext) {
+ return new JsonPrimitive(dateFormat.format(date));
+ }
+
+ @Override public synchronized Date deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) {
+ try {
+ return dateFormat.parse(jsonElement.getAsString());
+ } catch (ParseException e) {
+ throw new JsonParseException(e);
+ }
+ }
+} \ No newline at end of file