Часовой пояс по умолчанию UTC

У меня есть приложение, которое работает должным образом. Во многих частях приложения отображается DateTime. Я использую библиотеку jodatime.

После добавления функций в приложение часовой пояс по умолчанию изменился на UTC.

Мне было интересно, почему это происходит, потому что я явно не установил часовой пояс, я инициализирую DateTime с помощью DateTime.now() или DateTime(millis). Я знаю, что мне следует явно установить часовые пояса, но какие могут быть причины для изменения часового пояса jodatime по умолчанию?

пожалуйста, проясните ситуацию, потому что UTC постоянно, независимо от вашего местоположения, по определению, это всемирное координированное время. Если бы вы сказали, что использовали EST и перешли на PST, я мог бы понять, почему у вас DateTime отличается, поскольку PST отстает на 3 часа, но этого и следовало ожидать, не так ли?

HukeLau_DABA 21.04.2024 10:11

@HukeLau_DABA Да. UTC одинаково в любой точке мира. Здесь я пытался попросить помощи о том, что все мое представление DateTime в пользовательском интерфейсе приложения использовало UTC вместо моего текущего часового пояса, как это было в предыдущей версии приложения. В любом случае, я уже ответил на вопрос. Если вы можете редактировать, помогите мне пересмотреть вопрос, чтобы помочь другим, у которых может возникнуть такая же проблема.

Hohenheim 21.04.2024 10:31
3
2
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Не звоните 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()
    }

Другие вопросы по теме