奇怪的Java日历行为

时间:2012-05-14 06:09:14

标签: java calendar

有谁理解为什么输出2077而不是2011年?

Integer yyyyMMdd = 20110830
Calendar day = Calendar.getInstance(TimeZone.DEFAULT);

Integer dd = yyyyMMdd % 100;
Integer yyyy = yyyyMMdd / 10000;

day.set(yyyy, MM-1, dd);

System.err.println(day.getTimeInMillis());

1 个答案:

答案 0 :(得分:5)

修复了你的代码以便它实际编译,我得到了预期的结果 - 所以可能是你真正运行但未显示的代码中的错误。这是我的代码:

import java.util.*;

class Test {
    public static void main(String[] args) {
        int yyyyMMdd = 20110830;
        Calendar day = Calendar.getInstance(TimeZone.getDefault());

        int dd = yyyyMMdd % 100;
        int MM = (yyyyMMdd % 10000) / 100;
        int yyyy = yyyyMMdd / 10000;

        day.set(yyyy, MM-1, dd);

        System.err.println(day.getTime());
    }
}

我机器上的结果:

Tue Aug 30 07:18:33 BST 2011