значение поля временной метки добавлено 8 часов, в то время как XStream анализирует xml - PullRequest
0 голосов
/ 08 января 2020

Когда я использую XStream parse xml для obj, возникает проблема: возвращаемое значение obj.datePurchased равно 2019-01-09 01:35:40.

Почему добавлено значение поля 8 часов?

public static void main(String[] args) {
    XStream xs = new XStream(new DomDriver());
    TimeZone zone = TimeZone.getTimeZone("Asia/Shanghai");
    xs.registerConverter(new DateConverter(zone));

    Order o = new Order();
    xs.alias("order", Order.class);

    xs.fromXML("<order><datePurchased>2019-01-08 17:35:40</datePurchased></order>", o);
    System.out.println(o);   // surprised, o.datePurchased is '2019-01-09 01:35:40'
}
class order {
    private Timestamp datePurchased;

    public Timestamp getDatePurchased() {
        return datePurchased;
    }

    public void setDatePurchased(Timestamp datePurchased) {
        this.datePurchased = datePurchased;
    }
}

Любая помощь будет принята с благодарностью! Спасибо! =)

1 Ответ

0 голосов
/ 08 января 2020

Причина в часовом поясе. Дата в файле XML не имеет часового пояса и поэтому указывается в UT C. Одна и та же дата и время в вашем часовом поясе отличаются на 8 часов.

...