0

我写了一些代码,我试图将它们用作订阅的比较,所以这段代码应该转储当前日期。月份和日期是正确的,但年份相差约 1900 年左右

    Calendar calendar=Calendar.getInstance();
Date validDate = new Date(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
    complain(validDate.toString());

抱怨是我编写的一个函数,它只是将字符串的值转储到警报框中的屏幕上

它显示了这个 3913-02-10

我需要在开始比较之前解决这个问题,所以越快越好

好的,我添加了一些新代码,不再使用过时的日期,但现在我的月份是 1,它显示 2013 1 10

    Calendar cal = Calendar.getInstance();

    int year = cal.get(Calendar.YEAR);
    int month = cal.get(Calendar.MONTH);
    int day = cal.get(Calendar.DAY_OF_MONTH);

    complain(String.valueOf(year) + " " + String.valueOf(month) + " " + String.valueOf(day));

经过进一步研究,我发现 MONTH 返回正确的值,但我不得不说这是非常不直观的,我认为这与对日期格式的正常理解相吻合 这已将一月设置为 0,二月设置为 1,三月设置为 2,等等. 这是不直观的。

谢谢大家

4

2 回答 2

6

您正在使用一个已弃用的构造函数,该构造函数将年份 - 1900 作为其第一个参数。

于 2013-02-10T23:35:54.237 回答
0

根据您最终要使用该应用程序做什么,请谨慎对待:

只需从年份中减去 1900 并将其发送到您的方法或您正在做的任何事情。

注意:这是一个糟糕的编程实践,如果这不是自学,请找到更好的方法。

于 2013-02-11T00:23:38.743 回答