通过传递特定日期来确定一周中的哪一天?

mgdq6dx1  于 2021-07-12  发布在  Java
关注(0)|答案(3)|浏览(310)

这个问题在这里已经有答案了

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();
}
biswetbf

biswetbf1#

月值从“0”开始。所以“10”代表“11月”。因此,当值'11'传入代码时,它给出12月份的日期。
请参阅文档。

s2j5cfk0

s2j5cfk02#

热释光;博士

所以,如果我通过它(17/11/2020),它应该返回“星期二”。
使用java.time。

java.time.LocalDate
.of( 2020 , 11 , 17 )
.getDayOfWeek()
.toString()

星期二

详细信息

从不使用 Calendar , GregorianCalendar ,等等。他们疯狂的月份编号,11月=10只是避免这些遗留类的众多原因之一。
使用现代的java.time类,而不是糟糕的遗留日期时间类。

String input = "17/11/2020" ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu" ) ;
LocalDate localDate = LocalDate.parse( input , f ) ;
DayOfWeek dow = localDate.getDayOfWeek() ;
System.out.println( dow.toString() ) ;

请在ideone.com上查看此代码的实时运行。
星期二
在实际工作中,使用 DayOfWeek::getDisplayName 获取星期几的本地化名称的文本。

java.time.LocalDate
.of( 2020 , 11 , 17 )
.getDayOfWeek()
.getDisplayName(
    TextStyle.FULL_STANDALONE , 
    Locale.CANADA_FRENCH
)

请在ideone.com上查看此代码的实时运行。
马尔迪
所有这些都在堆栈溢出上被多次讨论过。搜索以了解更多信息。

kx5bkwkv

kx5bkwkv3#

通过使用 java.time.LocalDate 你可以通过你的3个参数找到 dayOfWeek :

public static String findDay(int month, int day, int year) {
    return LocalDate.of(year, month, day).getDayOfWeek().toString();
}

相关问题