从星期数获得与Joda时间的日名称城大时间java.time老JDK

2022-09-02 23:42:55

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

从这个数字中,有没有办法使用Joda Time在Java中获取当天的名称?在javascript中,使用moment很容易做到这一点.js:

moment().day(my number)

答案 1

城大时间

至少这有效,尽管我认为它不是那么好:

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.timeJSR 310,Java 8及更高版本)中,使用DayOfWeek枚举

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

您可以直接使用特定的枚举实例,而不是像 .DayOfWeek 枚举为一周中的每一天提供一个实例,例如 DayOfWeek.TUESDAY2

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]);

答案 2

您可以自己动手

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

这甚至不需要任何库:)


推荐