Android中突然显示日历格式并自动更改

时间:2013-06-26 15:09:58

标签: android date calendar gmt

几个月前,我的Android应用程序运行良好。

我以这种方式使用了解析:

String xmlString = Utilities.Unmarshall(appFramework.ordine);

其中ordine是类Servizi的实例:

@Root(name = "Ordine")
public class Servizi {

@Element(name = "data_richiesta")
    public Calendar DataRichiesta;

//other elements

public Servizi() {
        DataDesideratoDa = Calendar.getInstance();
    }
}

我使用了库org.simpleframework.xml.core.Persister;

几个月前,这产生了类似的东西:

<data_richiesta class="java.util.GregorianCalendar">2012-11-16 17:55:10.216 GMT+01:00</data_richiesta>

虽然今天它产生:

<data_richiesta class="java.util.GregorianCalendar">2013-06-26 16:26:02.0 CEST</data_richiesta>

我的申请中没有改变任何内容,但现在我总是获得CEST格式,而几个月前我获得了GMT格式。

1 个答案:

答案 0 :(得分:1)

Calendar.getInstance()

http://docs.oracle.com/javase/6/docs/api/java/util/Calendar.html#getInstance()

  

使用默认时区和区域设置获取日历。返回的日历基于默认时区的当前时间和默认语言环境。

发生的事情是我们现在在夏天,所以您的设备的时区已经改变。每年,在许多国家,每年两次时区实际发生变化:https://en.wikipedia.org/wiki/Daylight_saving_time

您应该在代码中指定一个时区,并且可能使用UTC,它不会改变:

Calendar.getInstance(TimeZone.getTimeZone("UTC"));