Java 从日周数中,使用Joda Time获取日名称
我有一周中的一天编号:2(如果一周从星期一开始,则应与星期二匹配) 根据这个数字,有没有一种方法可以使用Joda Time在Java中获得当天的名称? 在javascript中,使用moment.js很容易做到:Java 从日周数中,使用Joda Time获取日名称,java,jodatime,Java,Jodatime,我有一周中的一天编号:2(如果一周从星期一开始,则应与星期二匹配) 根据这个数字,有没有一种方法可以使用Joda Time在Java中获得当天的名称? 在javascript中,使用moment.js很容易做到: moment().day(my number) 乔达时间 至少这是有效的,虽然我认为它不太好: LocalDate date = new LocalDate(); date = date.withDayOfWeek(2); System.out.println(DateTimeFor
moment().day(my number)
乔达时间
至少这是有效的,虽然我认为它不太好:
LocalDate date = new LocalDate();
date = date.withDayOfWeek(2);
System.out.println(DateTimeFormat.forPattern("EEEE").print(date));
不幸的是,它不提供星期几的枚举(java.time提供)。我还没有很快在巨大的api中找到另一种方法。也许一些Joda专家知道更好的解决方案
新增(感谢@BasilBourque):
java.time
在(、Java8和更高版本)中,使用
您可以直接使用特定的枚举实例,而不是类似的2
。枚举为一周中的每一天提供一个实例,例如
老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
应该返回一个星期日名称,例如
星期一或星期二
是,不带库,但在国际化场景中不可行。顺便说一下,您的解决方案不适合所需的索引顺序。OP想要第二个,你的解决方案将产生星期三而不是星期二。这包括英语。使用Joda Time可以实现其他语言的本地化。太棒了!谢谢你完整的回答。
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];
DateTime curTime = new DateTime();
curTime.dayOfWeek().getAsText(Locale.ENGLISH);