1

Android 2.3 最近在昨晚发布。所以很自然地我尝试了我的应用程序,发现有日期格式问题。我注意到 DateFormatter 产生不同的格式。因此,请在一个简单的 Java 程序中执行此操作:

((SimpleDateFormat)DateFormat.getDateTimeInstance(DateFormat.LONG, 
    DateFormat.LONG)).format(new Date());

输出是

美国东部时间 2010 年 12 月 7 日上午 11:49:40

在 android 模拟器中做同样的事情,你会得到

2010 年 12 月 7 日上午 11:42:50 GMT-05:00

注意不同的时区。有人遇到过这个问题吗?我可以使用另一种不依赖于 Java 实现的格式化程序吗?

编辑: 好的,所以这里有更多关于我认为这是坏的原因的详细信息:

使用此代码:

private final DateFormat format = 
    new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z");

我试图解析日期,但抛出以下错误:

12-07 12:55:49.556: ERROR/DateDeserializer(847): Error when parsing date
    java.text.ParseException: Unparseable date: "Mon, 06 Dec 2010 17:13:35 EST"
    at java.text.DateFormat.parse(DateFormat.java:626)
    at com.currency.mobile.client.DateDeserializer
        .deserialize(DateDeserializer.java:31)
    at com.currency.mobile.client.DateDeserializer
        .deserialize(DateDeserializer.java:19)
    at org.codehaus.jackson.map.deser.SettableBeanProperty
        .deserialize(SettableBeanProperty.java:149)
4

3 回答 3

1

看起来对模式“EEE MMM dd HH:mm:ss zzz yyyy”的支持也被破坏了。

叶夫盖尼

于 2011-01-01T00:18:43.763 回答
1

输出没有问题。您创建一个DateFormat -Instance ,它取决于默认的Locale。在不同的机器上,不同的 java 安装,默认的区域设置不同,因此与区域设置相关的操作的输出不同,这并不罕见。在这种情况下,默认TimeZone是不同的,但您问题中的两个输出代表相同的日期,以相同的格式打印 String MMMMM d, yyyy hh:mm:ss a z

更新: Android 2.3 中的 parse() 将与 TimeZonesGMT+xxxx等一起使用,但它不能识别EST例如用于解析的有效 TimeZone。Android 知道EST您是否使用TimeZone.getTimeZone("EST").

更新2:

不推荐使用三字母时区 ID“EST”、“HST”和“MST”。不要使用它们。

于 2010-12-07T17:38:05.647 回答
1

两者都是相同的时区只是不同的表示

于 2010-12-07T16:54:16.440 回答