java - 奇怪的 Java 日历行为

标签 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());

最佳答案

修复了您的代码,使其能够真正编译后,我得到了预期的结果 - 所以大概这是您真正运行但未显示的代码中的错误。这是我的代码:

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

关于java - 奇怪的 Java 日历行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10578189/

相关文章:

java - 为什么 O(n^2) 与 O(ab) 不同?

Java Mock 对象,没有依赖注入(inject)

java.util.Calendar getMaximum 最后一天返回错误

java - 为什么不推荐使用 java.util.Date 的 setTime() 方法?

javascript - 如何检测Google可视化中日期单元格的点击事件。日历

java - 使用 EditText 时出现 NullPointerException

java - XSD循环导入

java - Ant 无法删除 Windows 上的某些文件

java - 禁用日历对象中的时区区域

java - 将字符串转换为日历。最简单的方法是什么?