java日期再次出现问题

时间:2011-05-05 15:15:40

标签: java date

我想知道日期的天数,getDay()方法返回错误的答案,怎么可以 我知道正确的天数?

5 个答案:

答案 0 :(得分:5)

您应该真正探索java.util.Calendar API

答案 1 :(得分:3)

您需要使用Calendar类。这是一个例子:

Date date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));

getDate()类上有一个Date方法,但它已被弃用,因为它没有正确处理某些边缘情况。

您尝试使用的方法(java.util.Date.getDay())实际上会返回星期几,而不是月中的某天。无论如何,它已被弃用,与上述类似。

如果您不喜欢Calendar类笨重的界面,可以尝试Joda Time

答案 2 :(得分:2)

寻找这个月的哪一天?检查此http://download.oracle.com/javase/1.4.2/docs/api/java/util/Date.html#getDate()

修改

仅当您使用Date时才会这样(不推荐使用Date,因为大部分方法都是不推荐使用的)。如果您愿意使用Calendar(这是更好的而且没有完全废弃的方法),您可以执行以下操作:

int dayOfTheMonth = Calendar.getInstance().get(Calendar.DATE);

答案 3 :(得分:2)

java.util.Date实际上只保留了快速日期到整数转换,对于任何与日期相关的实际数学,你需要使用java.util.Calendar的子类,它可以找出像那里多少小时的事情是在一天(如果你还记得夏令时等,这不是常数),一个月中有多少天(再次不是常数)等等。

由于您可能正在处理Gregorian日历(12个月,1月,2月等日历),因此您可能希望使用java.util.GregorianCalendar。还有其他可用的日历,即使它们可能并非全部附带JVM。

答案 4 :(得分:1)

你的意思是文档说不使用的那个?

 int getDay() 
      Deprecated. As of JDK version 1.1, replaced by Calendar.get(Calendar.DAY_OF_WEEK).

使用Calendar类。