Intereting Posts
Как загрузить файл в Kotlin REPL Методы ведения журнала Anko не могут быть решены Подключение к топливу Kotlin (Mutable) List <(raw) kotlin.Any?> Cast to List <JsonObject> В Kotlin Как я могу преобразовать Int? к Int Кнопки доступа из макета, программно раздутые в другом макете Kotlin – MainActivity расширяет AppCompatActivity, функция onRequestPermissionsResult не найдена и не может быть переопределена Исключение: blockingConnect не следует вызывать в потоке пользовательского интерфейса, несмотря на то, что я добавил другой поток Добавить пользовательские запросы REST API для Twitter с помощью Kotlin Невозможно создать привязки вида java.lang.NullPointerException В Котлине я могу переопределить некоторые существующие операторы, но как насчет создания новых операторов? как сохранить правильное вращение растрового изображения Каков самый простой способ получить потокобезопасное свойство в Котлин? Ошибка плагина: Котлин бросил исключенное исключение NoReadAccessException Динамически оживлять нижний лист peekHeight

TimeZone не показывает

Я использую IntelliJ для своей программы (я использую Kotlin и язык Java), я пытаюсь получить отчет времени, используя запрос из моей базы данных и отправляю его в браузер (я использую Postman для просмотра результат). Когда я отлаживаю свой код и просматриваю результат запроса, часовой пояс кажется «таким же, как я его хочу, его даже показать -7 (время разницы между мной и UTC), но когда дело доходит до браузера (Postman ), показывающий время UTC и +0000, например («дата»: «2017-10-12T15: 00: 33.000 + 0000» вместо «date»: «2017-10-12T15: 00: 33.000 + 0007»). я пробовал много вариантов и трачу около 6 часов, чтобы найти решение, но ничего не работает. Спасибо вам за помощь

Postgres хранит TIMESTAMP WITH TIME ZONE в UTC , отбрасывая пройденную зону после ее использования, чтобы внести корректировку в UTC. Обратите внимание, что это поведение, специфичное для Postgres – базы данных сильно различаются по времени обработки данных, а спецификация SQL едва затрагивает эту тему.

Как прокомментировал Марлоу, если вам нужно запомнить часовой пояс, захваченный из ввода данных, вам нужно будет сохранить это в другом столбце. Захватите правильное название часового пояса в формате continent/region , например, America/Montreal , Africa/Casablanca или Pacific/Auckland . Никогда не используйте аббревиатуру 3-4 букв, такую ​​как EST или IST поскольку они не являются настоящими часовыми поясами, не стандартизированы и даже не уникальны (!).

➠ Вот трюк: сеанс Postgres в интерактивном инструменте, таком как pgAdmin, динамически применяет часовой пояс по умолчанию после получения значения UTC. На мой взгляд, это благие намерения, поскольку это скрывает истинную природу сохраненных данных.

Извлеките значение в UTC с помощью современных классов java.time.

 Instant instant = myResultSet.getObject( … , Instant.class ) ; 

Отрегулируйте желаемый часовой пояс.

 ZoneId z = ZoneId.of( "Asia/Kolkata" ) ; ZonedDateTime zdt = instant.atZone( z ) ; 

Создайте строку для веб-браузера, используя класс DateTimeFormatter . Обратите внимание на функции автоматической локализации.

Все это было рассмотрено много раз при переполнении стека. Найдите, чтобы узнать больше.

Решение: поэтому я нашел решение моей проблемы здесь: переопределить BeanPropertyRowMapper для поддержки JodaTime DateTime

в скором времени, тип timestamp не работает хорошо с часовым поясом, поэтому я изменил его на DateTime в Joda и завернул результат запроса на costumed Bean (из ссылки, которую я опубликовал)