Формат календаря внезапно и автономно изменился в Android

Мое приложение для 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.


person GVillani82    schedule 26.06.2013    source источник


Ответы (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"));
person Ken Wolf    schedule 26.06.2013
comment
Спасибо @Ken, но это не решает мою проблему: я получаю ту же дату вывода. - person GVillani82; 27.06.2013
comment
Пожалуйста, покажите, где вы генерируете вывод. Если вы зарегистрируете экземпляр календаря, вы увидите, что это UTC... - person Ken Wolf; 27.06.2013
comment
На самом деле, возможно, это что-то в Persister - я не знаком с этим - надеюсь, кто-то еще может помочь! - person Ken Wolf; 27.06.2013