这个问题在这里已经有答案了:
calendar.getdisplayname返回错误的日期(3个答案)
为什么1月0日是java日历((16个答案)
上个月关门了。
我必须编写一个方法,返回给定日期的日期。所以,如果我通过它(17/11/2020),它应该返回“星期二”。运行程序时,它将在星期四返回。我做错什么了?
public static String findDay(int month, int day, int year) {
Calendar calendar = new GregorianCalendar(year, month, day);
return calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.US).toUpperCase();
}
3条答案
按热度按时间biswetbf1#
月值从“0”开始。所以“10”代表“11月”。因此,当值'11'传入代码时,它给出12月份的日期。
请参阅文档。
s2j5cfk02#
热释光;博士
所以,如果我通过它(17/11/2020),它应该返回“星期二”。
使用java.time。
星期二
详细信息
从不使用
Calendar
,GregorianCalendar
,等等。他们疯狂的月份编号,11月=10只是避免这些遗留类的众多原因之一。使用现代的java.time类,而不是糟糕的遗留日期时间类。
请在ideone.com上查看此代码的实时运行。
星期二
在实际工作中,使用
DayOfWeek::getDisplayName
获取星期几的本地化名称的文本。请在ideone.com上查看此代码的实时运行。
马尔迪
所有这些都在堆栈溢出上被多次讨论过。搜索以了解更多信息。
kx5bkwkv3#
通过使用
java.time.LocalDate
你可以通过你的3个参数找到dayOfWeek
: