从当天的周数获得Joda Time的日期名称

我有一周中一天数字:2(如果星期一开始一周,则应与星期二相匹配)。

从这个数字是否可以使用Joda Time获取Java中的当天名称? 在javascript中使用moment.js很容易做到:

moment().day(my number) 

乔达时间

至少这是有效的,虽然我认为它不太好:

 LocalDate date = new LocalDate(); date = date.withDayOfWeek(2); System.out.println(DateTimeFormat.forPattern("EEEE").print(date)); 

不幸的是, Joda-Time没有提供星期几的枚举(java.time确实)。 我还没有在巨大的api中找到另一种方式。 也许一些Joda专家知道更好的解决方案。

添加(感谢@BasilBourque):

 LocalDate date = new LocalDate(); date = date.withDayOfWeek(2); System.out.println(date.dayOfWeek().getAsText()); 

java.time

在java.time ( JSR 310 ,Java 8和更高版本)中,使用DayOfWeek 枚举 。

 int day = 2; System.out.println( DayOfWeek.of(2).getDisplayName(TextStyle.FULL, Locale.ENGLISH) ); // Output: Tuesday 

您可以直接使用特定的枚举实例,而不是像2这样的幻数 。 DayOfWeek枚举为DayOfWeek中的每一天提供实例。

 System.out.println( DayOfWeek.TUESDAY.getDisplayName(TextStyle.FULL, Locale.ENGLISH) ); // Output: Tuesday 

老JDK

为了完成它,这里是旧JDK的解决方案:

 int day = 2; DateFormatSymbols dfs = DateFormatSymbols.getInstance(Locale.ENGLISH); System.out.println(dfs.getWeekdays()[day % 7 + 1]); 

你可以自己做

 String[] dayNames = new String[]{"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}; String name = dayNames[day-1]; 

这甚至不需要任何库:)

使用Joda你可以这样做:

  DateTime curTime = new DateTime(); curTime.dayOfWeek().getAsText(Locale.ENGLISH); 

用您的Locale替换Locale

应该返回Monday or Tuesday的星期名称