【问题标题】:DatatypeConverter.parseDate is outputting wrong dateDatatypeConverter.parseDate 输出错误的日期
【发布时间】:2012-07-23 13:34:09
【问题描述】:

鉴于这一小段代码:

// import javax.xml.bind.DatatypeConverter;

Date date = DatatypeConverter.parseDate("2012-07-12-04:30").getTime();
System.out.println(date);
Date date2 = DatatypeConverter.parseDate("2012-07-12+00:00").getTime();
System.out.println(date2);

输出是:

Thu Jul 12 00:00:00 VET 2012
Wed Jul 11 19:30:00 VET 2012

为什么转换日期比给定日期晚 4:30?我被卡住了。

【问题讨论】:

    标签: java datetime timezone date-conversion


    【解决方案1】:

    “2012-07-12+00:00” - UTC 时区为 2012 年 7 月 12 日 00:00 或委内瑞拉时区 2012 年 7 月 11 日 19:30。

    您会在本地时区获得该时间的字符串表示,但无论如何 Date 类是时区绑定到 UTC

    【讨论】:

    • 日期完全没有时区。原因是 DatatypeConverter 选择将字符串解释为 UTC 时间。
    • 是的,你是对的。我可能以错误的方式提到时区。 Date 包含自 1970 年 1 月 1 日 00:00 UTC 以来的毫秒数,但实际上它内部没有时区。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    • 2021-05-30
    • 1970-01-01
    相关资源
    最近更新 更多