Java Calendar + TimeZone
встретился с такой проблемой, которую не понимаю как решить...
С сервера прилетает дата добавления в таком вот виде: "2020-10-15T11:51:51.000Z" Время указано по нулевой часовой зоне
На самом же деле добавление произошло не в 11:51, а в 14:51, так как я (добавляющий) нахожусь в +3 часовой полосе.
val cal = Calendar.getInstance()
val sdf = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.getDefault())
cal.time = sdf.parse(item.time) // "2020-10-15T11:51:51.000Z"
cal.timeZone = TimeZone.getTimeZone("Europe/Kiev")
val sdf2 = SimpleDateFormat("dd.MM.yyyy HH:mm", Locale.getDefault())
Log.i("LOG", sdf2.format(cal.time))
В итоге в логе у меня 11:51, а по идее должно быть 14:51...
Что я делаю не так?)
Ответы (2 шт):
Автор решения: AVRamones
→ Ссылка
А вы уверены, что должны применять метод setTimeZone() к cal? На мой взгляд логичнее было бы применить ее к sdf:
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.getDefault());
calendar.setTime(sdf.parse(item.getTime()));
sdf.setTimeZOne(TimeZone.getTimeZone("Europe/Kiev"));
Log.i("LOG",sdf.format(cal.getTime()));
Автор решения: Андрей Шпилевой
→ Ссылка
val cal = Calendar.getInstance()
val sdf = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.getDefault())
sdf.timeZone = TimeZone.getTimeZone("GMT") cal.time = sdf.parse("2020-10-15T11:51:51.000Z")
val sdf2 = SimpleDateFormat("dd MM yyyy HH:mm", Locale.getDefault())
sdf2.timeZone = TimeZone.getTimeZone("Europe/Kiev")
val dateString = sdf2.format(cal.time )
println(dateString)
Вот так вот! Спасибо AVRamones за наводку