从当天的周数获得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
的星期名称