Я пытался преобразовать местное время (EST) в UT C и наоборот. Итак, я представляю выбор времени, пользователь выбирает время, я конвертирую его в UT C и отправляю на сервер. Вот код:
val cal = Calendar.getInstance()
cal.set(Calendar.HOUR_OF_DAY, mHour) //mHour = 15
cal.set(Calendar.MINUTE, mMinute) //mMinute = 00
cal.set(Calendar.SECOND, 0)
val formatter = SimpleDateFormat("HH:mm:ss")
formatter.timeZone = TimeZone.getTimeZone("UTC")
val cutOffTime = formatter.format(cal.time) //this gives 19:00:00 which is correct
Приведенный выше вывод для cutOffTime правильный, так как 15:00 EST - 19:00 UT C после учета экономии дневного света.
Теперь я получаю это же CutOffTime с сервера, преобразовать его в локальный (EST) и отобразить. Вот код:
val cutOffTime = jsonObject.get("cutOffTime").getAsString()) //value is 19:00:00
var cutoffTime: Time? = null
val format = SimpleDateFormat("hh:mm:ss")
format.timeZone = TimeZone.getTimeZone("UTC")
cutoffTime = Time(format.parse(cutOffTime).time)
//cutoffTime has value 14:00 which is strange, it should be 15:00
Итак, cutoffTime в приведенном выше коде имеет значение 14:00, что странно, оно должно быть 15:00. Обратите внимание, что этот код работал до перехода на летнее время 8 марта 2020 года. Есть идеи, что я делаю не так?