【问题标题】:Date parsing from string to long gives wrong result从字符串到长的日期解析给出错误的结果
【发布时间】:2011-12-06 15:08:15
【问题描述】:

我得到了简单的代码,也许问题取决于给定的格式字符串或时区。所以这里是代码:

public static void main(String[] args) {
    SimpleDateFormat df = new SimpleDateFormat("HH:mm");
    try {
        Date added = df.parse("00:00");
        System.out.println(added);
        System.out.println(added.getTime());
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

结果是:Thu Jan 01 00:00:00 EET 1970 -10800000 --> 应该为 0,因为我们给出了 00:00 小时,而其他时间元素保持默认。

//编辑

是的,问题在于时区来解决这个问题 df.setTimeZone(TimeZone.getTimeZone("UTC"));在解析之前。

【问题讨论】:

    标签: java timestamp


    【解决方案1】:

    值 10800000 正好是 3 小时(以毫秒为单位),我收集的大致是 EET 和 UTC 之间的偏移量(实际上,根据this,它只有 2 小时,但我猜额外的一小时是 DST什么的)。

    因此,差异可能是由于您的时区。

    【讨论】:

      【解决方案2】:

      您的时区似乎是 EET。该差异将是 1970 年 1 月 1 日 00:00:00.000 UTC 的偏移量

      【讨论】:

        【解决方案3】:

        由于您没有指定日期,只指定​​小时,因此您实际上创建了一个具有默认值的 Date 对象,如 DateFormat API(SimpleDateFormat 实现)中指定的那样:

        日期表示为 Date 对象或自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-11-17
          • 2018-04-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多