这是我的代码:
import java.util.Calendar;
import java.util.Locale;
public class test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Calendar a = Calendar.getInstance();
a.set(Calendar.MONTH, 7);
a.set(Calendar.YEAR, 2011);
a.set(Calendar.DAY_OF_MONTH, 16);
System.out.print(test.getDate(a));
}
// What-date calculation
public static String getDate(Calendar date) {
//date = Calendar.getInstance();
return date.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG,
Locale.getDefault());
}
}
当我运行此代码时,它会打印“星期二”。但是,我在2011年7月16日运行此代码并取消注释
date = Calendar.getInstance();
因此date
将于2011年7月16日完全打印出“星期六”。
我想知道日历对象a
是否正确传递,因为a
也是在2011年7月16日设置的。
有没有解决方案让我传递Calendar对象并正确打印日期?
提前感谢
答案 0 :(得分:3)
MONTH
从零开始。所以7月是8月。见the docs。为方便起见,Calendar.JULY
答案 1 :(得分:3)
设置日历月份时不要使用“魔术”数字,因为它们基于0(不是基于假设的1)。而是使用Calendar常量,例如Calendar.JULY。
答案 2 :(得分:2)
这很简单 - 日历不使用1索引月份。你将它设置为8月16日。打印Calendar对象的toString(),你会看到。 Calendar提供了您可以使用的常量。
您可能想查看Joda DateTime库,它可以让您更轻松地使用1索引月份并解决许多其他日历问题。