为什么这会产生3913年

时间:2013-02-10 23:31:16

标签: android date

我写了一些代码,我尝试将其用作订阅的比较,因此这段代码应该转储当前日期。月份和日期是正确的,但是大约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返回了正确的值,但我不得不说这是非常不直观的我认为它会与日期格式的正常理解相吻合 这是1月设置为0,2月到1,3月到2等,这是非直观的。

感谢所有

2 个答案:

答案 0 :(得分:6)

你正在使用一个deprecated constructor,它将年份 - 1900作为第一个参数。

答案 1 :(得分:0)

取决于你最终会使用该应用程序做什么,请带上一粒盐:

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

注意:这是一项令人难以置信的编程实践,如果这不是自我教育,那么找到更好的方法。