Joda时区模式在环境中发生变化

时间:2011-07-27 21:08:27

标签: java classloader jodatime

我很困惑为什么某些时区的日期时间格式输出在我的环境中发生了变化。

我发生了一场战争,我将这场战争视为对Jetty的独立战争(使用Java 1.5),此代码

  

的System.out.println(新   。日期时间()withZone(DateTimeZone.forID( “亚/加尔各答”))的toString( “ZZZ”));

生成输出:IST

当我把这场战争放到耳边,并在WebSphere 6.1上运行时,

输出:'+5:30'

我希望在两个地方都能展示“IST”。我怀疑它与类加载有关,以及Joda如何找到时区定义。如果我能指出一些文件,我将非常感激。

我正在使用Joda 1.6.2

1 个答案:

答案 0 :(得分:2)

有关此问题的一些文档可以在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-zonesftp://ftp.iana.org/tz找到数据 - 例如ftp://ftp.iana.org/tz/releases/tzdata2017a.tar.gz)。

然后查找应用程序服务器中的现有jar,并查看在其中找到相同文件名的位置。我个人喜欢使用我自己的小'grepJars.sh'bash脚本,它在当前目录的所有jar / 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

然后,可能还有更好的搜索脚本/工具......