【问题标题】:How to print out time zone abbreviations when using offset hours in Joda Time?在 Joda Time 中使用偏移小时时如何打印出时区缩写?
【发布时间】:2010-12-15 15:57:56
【问题描述】:

我正在使用 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 打印出适当的时区首字母缩写词?

【问题讨论】:

    标签: timezone jodatime


    【解决方案1】:

    不,这是不可能的,但这不是 joda-time 问题,而是因为时区的工作方式。

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

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

    【讨论】:

    • 我明白了。我在想它可能是这样的。感谢您的信息,这是有道理的。
    猜你喜欢
    • 1970-01-01
    • 2013-04-04
    • 1970-01-01
    • 2013-01-26
    • 2013-01-14
    • 2012-07-22
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    相关资源
    最近更新 更多