Java,为日期添加分钟,奇怪的异常

时间:2008-11-12 23:33:46

标签: java date

在Windows和Ubuntu Linux上使用Java版本1.5.0_06:

每当我将日期添加到日期“2008/10/05 00:00:00”时,似乎错误地添加了额外的小时。

ie:在2008/10/05 00:00:00午夜加入360分钟到达2008/10/05 06:00:00

但它是在2008/10/05 07:00:00到达

完全令人困惑的是,当这一天是2008/10/05这个 ONLY 时,我尝试正确执行分钟添加的所有其他日子。

我疯了还是这是Java中的错误?

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

    try {
        String date = "2008/10/05 00:00:00";
        int minutesToAdd = 360;  // 6 hrs

        Calendar cal = Calendar.getInstance();
        cal.setTime(sdf.parse(date));
        cal.add(Calendar.MINUTE, minutesToAdd);
        System.out.println(cal.getTime());

    } catch (ParseException e) {}

3 个答案:

答案 0 :(得分:18)

那天白天节省了交叉。

你在新西兰吗?如果是这样,那意味着您的时区文件已过期。最好去Java下载站点下载新的站点;寻找“JDK DST时区更新工具”。

答案 1 :(得分:3)

这可以成为夏令时吗?

答案 2 :(得分:1)

看看Joda-Time

来自文档:

“Joda-Time已经创建,可以从根本上改变Java中的日期和时间处理.JDK类日期和日历的设计非常糟糕,有很多错误并且具有奇怪的性能影响。” < / p>