Дата добавить GMT к часу - PullRequest
       43

Дата добавить GMT к часу

0 голосов
/ 10 апреля 2019
val startHour = SimpleDateFormat("HH:mm").format(pickup.begin())

Значение pickup.begin равно " Ср 10 апреля, 10:00:00 GMT + 03: 00 2019 ", поэтому мне нужно, чтобы начальный час был 10:00 + 3 ч -> 13:00 , но я получаю значение startHour 10:00.

Я не знаю, как добавить значение GMT ​​к часу.

Ответы [ 3 ]

2 голосов
/ 10 апреля 2019

Нет, вы неправильно поняли.Wed Apr 10 10:00:00 GMT+03:00 2019 является (текстовое представление) a java.util.Date, значение которого равно 2019-04-10T07: 00 UTC.Похоже, ваш часовой пояс по умолчанию - GMT + 03: 00, и Date пытается с вами дружить и печатать время в этом часовом поясе, поэтому оно печатает 10:00:00.13:00, безусловно, будет неправильным, независимо от того, хотите ли вы время в UTC или в вашем собственном часовом поясе по умолчанию.

Класс Date, возвращаемый из pickup.begin(), плохо спроектирован и сильно устарел, так что вы можетеЯ хочу рассмотреть, можно ли вместо этого вернуть тип из java.time, современного Java-API даты и времени.Это также может прояснить ситуацию.

Также можно преобразовать этот java.util.Date объект в его современный аналог java.time.Instant.Ищите новые методы преобразования, добавленные к старым классам.

Instant instant = pickup.begin().toInstant() ;  // Converting legacy `Date` object to modern `Instant` object. 

Поиск переполнения стека и чтение Обучающего курса по Oracle , чтобы узнать больше о классах Instant, OffsetDateTime и ZonedDateTime.

Вы можете использовать java.time на старых версиях Android, если добавите ThreeTenABP в свой проект Android.Это Android-адаптация бэкпорта java.time.

Ссылки

0 голосов
/ 10 апреля 2019

Вы можете попробовать что-то вроде этого

Я принимаю 'date' в качестве строки здесь

  String date="something" 
 val sdf = SimpleDateFormat("HH:mm")
 sdf.timeZone = TimeZone.getTimeZone("UTC")
 val gmt = sdf.parse(date)

Если это ваш случай

Date date="somevalue"

тогда

val gmt = sdf.format (дата)

gmt вернет вам ваше местное время

0 голосов
/ 10 апреля 2019

Попробуйте добавить языковой стандарт в свой простой формат, соответствующий часовому поясу +3.

val startHour = SimpleDateFormat("HH:mm", Locale.Germany).format(pickup.begin())
...