У меня есть приложение, которое работает должным образом. Во многих частях приложения отображается DateTime. Я использую библиотеку jodatime.
После добавления функций в приложение часовой пояс по умолчанию изменился на UTC.
Мне было интересно, почему это происходит, потому что я явно не установил часовой пояс, я инициализирую DateTime
с помощью DateTime.now()
или DateTime(millis)
. Я знаю, что мне следует явно установить часовые пояса, но какие могут быть причины для изменения часового пояса jodatime по умолчанию?
@HukeLau_DABA Да. UTC одинаково в любой точке мира. Здесь я пытался попросить помощи о том, что все мое представление DateTime в пользовательском интерфейсе приложения использовало UTC вместо моего текущего часового пояса, как это было в предыдущей версии приложения. В любом случае, я уже ответил на вопрос. Если вы можете редактировать, помогите мне пересмотреть вопрос, чтобы помочь другим, у которых может возникнуть такая же проблема.
Не звоните DateTime.now()
раньше application::onCreate
. Это приведет к значению null
по умолчанию TimeZone
. Если вы каким-то образом инициализируете переменную DateTime в классе приложения следующим образом:
private var dateTime: DateTime = DateTime.now()
Задержите его вызов после или внутри application::onCreate
, примерно так:
private lateinit var dateTime: DateTime
override fun onCreate() {
super.onCreate()
dateTime = DateTime.now()
}
пожалуйста, проясните ситуацию, потому что UTC постоянно, независимо от вашего местоположения, по определению, это всемирное координированное время. Если бы вы сказали, что использовали EST и перешли на PST, я мог бы понять, почему у вас DateTime отличается, поскольку PST отстает на 3 часа, но этого и следовало ожидать, не так ли?