如何在Joda Time中使用偏移小时时打印出时区缩写?

时间:2009-11-11 22:22:54

标签: timezone jodatime

我正在使用Joda Time,我正在传递使用DateTimeZone.forOffsetHours()创建的DateTimeZones。我想使用标准时区首字母缩略词打印这些时区,例如“PST”,“EST”等。

但是,每当我打印使用这些时区的DateTimes时,我得到时区的“hh:mm”表示而不是名称首字母缩写。

以下是一个例子:

public class tmp {
    public static void main( String args[] ) {
        // "PST"
        System.out.println( DateTimeFormat.forPattern("z").print( new DateTime() ) );

        // "PST"
        System.out.println( DateTimeFormat.forPattern("z").print( new DateTime( DateTimeZone.forTimeZone( TimeZone.getTimeZone("PST")) )) );

        // "-08:00"
        System.out.println( DateTimeFormat.forPattern("z").print( new DateTime( DateTimeZone.forOffsetHours(-8) )) );
    }
}

有没有办法在上一个例子中使用Joda Time打印出适当的时区缩写?

1 个答案:

答案 0 :(得分:6)

不,这是不可能的,但这不是一个joda-time问题,而是因为时区如何运作。

偏移量(例如UTC-8)不确定位置,因此也不确定取决于位置的首字母缩略词。如您所见here,多个时区中有UTC-8。

第一个示例有效,因为您的默认时区是PST。第二个是有效的,因为你要求一个时区的名称(所有的夏令时等)。在第三个中,您将获得一个没有与之关联的名称的固定偏移时区。