Изменение часового пояса Joda в окружающей среде - PullRequest
2 голосов
/ 28 июля 2011

Меня смущает, почему выходные данные форматирования даты и времени для некоторых часовых поясов меняются в моих средах.

У меня есть война, я веду эту войну как отдельную войну на Jetty (с использованием Java 1.5), этот код

System.out.println (новый . DateTime () withZone (DateTimeZone.forID ( "Asia / Калькутта")) ToString ( "ZZZ"));.

Выход продукции: IST

Когда я вкладываю эту войну в ухо и запускаю на WebSphere 6.1,

Вывод: '+5:30'

Я бы хотел, чтобы "IST" показывался в обоих местах. Я подозреваю, что это как-то связано с загрузкой классов, и как Джода находит определения часовых поясов. Если бы я мог указать на какую-то документацию, я был бы очень благодарен.

Я использую Joda 1.6.2

1 Ответ

2 голосов
/ 28 июля 2011

Некоторую документацию по этому вопросу можно найти по адресу http://joda -time.sourceforge.net / tz_update.html - вы должны убедиться, что существующие файлы jar на вашем сервере приложений не переопределяют эти файлы часовых поясов.

В 2011 году вы можете загрузить ftp: //elsie.nci.nih.gov/pub/tzdata2011h.tar.gz и найти термины «Калькутта» и «IST» в распакованном виде. каталог. В 2017 году вы найдете данные через IANA (https://iana.org/time-zones и ftp: //ftp.iana.org/tz - например, ftp: //ftp.iana.org /tz/releases/tzdata2017a.tar.gz).

Затем найдите существующие jar-файлы на сервере приложений и посмотрите, где в них находятся одинаковые имена файлов. Мне лично нравится использовать мой собственный маленький скрипт bash 'grepJars.sh', который находит файл по имени файла во всех jars / wars / ear в текущем каталоге (не в подкаталогах!):

#!/bin/bash

searchterm=$1

handleFile()
{
    f=$1
    found=`jar tf "$f"|grep "$searchterm"`
    if [ "$found" ]; then
        echo "-----------------"
        echo "$f"
        echo "-----------------"
        echo "$found"
    fi
}

ls *.?ar|while read f; do handleFile $f; done

Опять же, вероятно, есть лучшие поисковые скрипты / инструменты ...

...