在java中根据日期查找日期 - 给出错误的答案

时间:2014-02-20 08:56:59

标签: java android date

java.util.Date提供错误的日期作为输出。

    java.util.Date date = new Date(2014,03,01);
    System.out.println("day is" +date.getDay());

输出:日是3

实际上它应该是7

更新:非常感谢我能够获得输出这是我的代码

    java.util.Calendar c = java.util.Calendar.getInstance();
    c.clear();
    c.set(year,month,dd);
    System.out.println("day of week "+c.get(java.util.Calendar.DAY_OF_WEEK));

2 个答案:

答案 0 :(得分:5)

我想你想创建2014年3月1日的日期。但是在你的构造函数调用中你创建日期3914年4月1日! API告诉您原因:

A year y is represented by the integer y - 1900.
A month is represented by an integer from 0 to 11; 0 is January, 1 is February, and so forth; thus 11 is December.
A date (day of month) is represented by an integer from 1 to 31 in the usual manner.

编辑:也不推荐使用此构造函数。请改用日历。

答案 1 :(得分:2)

根据getDay()

的javadoc
  

返回此日期所代表的星期几。归来了   值(0 =星期日,1 =星期一,2 =星期二,3 =星期三,4 =   星期四,5 =星期五,6 =星期六)代表星期几   包含或以此为代表的时刻开始   日期对象,在本地时区中解释。

所以 不是一个月的日子 。另请注意,您使用的是已弃用的日期构造函数和方法。您可以使用java.util.Calendar

实现相同的目标

03个月 不是三月 ,其 四月

    Calendar c = Calendar.getInstance();
    c.set(Calendar.YEAR, 2014);
    c.set(Calendar.MONTH, 3);
    c.set(Calendar.DAY_OF_MONTH, 1);

    System.out.println(c.get(Calendar.DAY_OF_WEEK));

此处的输出也是3,因为日期代表2014年4月1日,即星期二和Calendar.DAY_OF_WEEK doc

  

获取和设置的字段编号,表示星期几。这个   字段取值SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,   星期五和星期六。

Calendar.TUESDAY3