Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从日周数中,使用Joda Time获取日名称_Java_Jodatime - Fatal编程技术网

Java 从日周数中,使用Joda Time获取日名称

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

我有一周中的一天编号: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));
不幸的是,它不提供星期几的枚举(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);