@newdancer

Как при парсинге библиотекой gson убрать смену timezone под текущую?

Как при парсинге библиотекой gson убрать смену timezone под текущую?
К примеру из строки пашу дату:
2020-05-26T17:34:00+0200
перевожу в объект date, после чего перевожу обратно в строку и получаю 2020-05-26T18:34:00+0300
В самом объекте date уже дата с мои текущим поясом. Как оставлять дату как есть при парсинге
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ответы на вопрос 1
@szanislo
Нужно зарегистрировать свой конвертер даты.
public class GsonUTCDateAdapter implements JsonSerializer<Date>,JsonDeserializer<Date> {

    private final DateFormat dateFormat;

    public GsonUTCDateAdapter() {
      dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.US); 
      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);
      }
    }
}

и зарегестрировать его
Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, new GsonUTCDateAdapter()).create();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы