为什么这会产生3913年

Jef*_*nes 0 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());
Run Code Online (Sandbox Code Playgroud)

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

它显示了这个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));
Run Code Online (Sandbox Code Playgroud)

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

谢谢大家

ass*_*ias 6

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

  • 不,因为javadoc这么说.它还建议使用GregorianCalendar构造函数. (2认同)
  • @JeffJanes assylias包含了当前Javadoc的链接,请继续阅读.同时向上滚动到"构造函数"部分,其中为每个不推荐使用的构造函数提供替代方法.如果你认真对待Java编程能够使用广泛的Javadocs真的是一项至关重要的技能. (2认同)