【问题标题】:how to get abbreviated timezone?如何获得缩写的时区?
【发布时间】:2015-12-22 05:18:38
【问题描述】:

我正在尝试获取缩写的时区,例如。 PST、EDT 等。我设法获得了偏移量,但无法根据偏移量获得缩写的时区。

谁能帮忙?

例如,当

tz = 美国/凤凰城 和时间=1450759239340

DateTimeFormat.forPattern("zzz").withZone(tz).print(time);

结果我得到 -07:00

我可以使用这些可用代码获得缩写的时区吗?

提前致谢。

【问题讨论】:

  • 无法重现。在带有 JDK 1.8.0_51 和 joda-time-2.9.1 的 Window 7 上,我得到 MST 用于 3 个小写 z,Mountain Standard Time 用于 4 z。对于 1、2 和 3 个大写 Z,我得到:-0700-07:00America/Phoenix
  • 上面相同的代码在 java 1.7 中生成 MST,但在 1.8.0-60 中,它显示了偏移量。这可能是 joda-time 插件跟上 java 8 的变化吗?

标签: java grails timezone


【解决方案1】:

这里是如何使用 SimpleDateFormat 和 Calendar 类获得不同的日期格式。

其中之一是在小情况下使用 z 获得 PDT、IST 类型的输出。

如果您想要详细的名称,请使用zzzz

我建议您从下面选择所需的日期格式:

"yyyy.MM.dd G 'at'              HH:mm:ss z" 2001.07.04 AD at 12:08:56 PDT
"EEE, MMM d, ''yy"              Wed, Jul 4, '01
"h:mm a"                        12:08 PM
"hh 'o''clock' a, zzzz"         12 o'clock PM, Pacific Daylight Time
"K:mm a, z"                     0:08 PM, PDT
"yyyyy.MMMMM.dd GGG hh:mm aaa"  02001.July.04 AD 12:08 PM
"EEE, d MMM yyyy HH:mm:ss Z"    Wed, 4 Jul 2001 12:08:56 -0700
"yyMMddHHmmssZ"                 010704120856-0700        
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"    2001-07-04T12:08:56.235-0700

您可以使用 SimpleDateFormat 从日期获取正确格式化的字符串,反之亦然。

例如

String originalString = "2010-07-14 09:00:02";
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(originalString);
String newString = new SimpleDateFormat("H:mm").format(date); 

请参阅我的blog

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 2020-07-20
    • 2013-11-26
    • 1970-01-01
    • 2017-02-20
    相关资源
    最近更新 更多