从字符串解析为long的日期会产生错误的结果

时间:2011-12-05 22:01:04

标签: java timestamp

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

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”));在解析之前。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

值10800000恰好是3小时(以毫秒为单位),我收集的大致是EET和UTC之间的偏差(实际上,根据this,它只有2小时,但我想额外的小时数下降了DST或其他东西)。

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

答案 2 :(得分:0)

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

  

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