时间戳字段值在XStream解析xml时增加了8小时

问题描述 投票:0回答:1

[当我使用XStream将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;
    }
}

>

任何帮助将不胜感激!谢谢! =)

[当我使用XStream将xml解析为obj时,发生了一个问题是返回obj.datePurchased值为'2019-01-09 01:35:40'。为什么字段值增加了8小时?公共静态void main(String [] args)...

java timezone xstream
1个回答
0
投票

原因是时区。 XML文件中的日期没有时区,因此采用UTC。您所在时区的相同日期和时间相差8小时。

© www.soinside.com 2019 - 2024. All rights reserved.