从一周的数字到Joda Time的日期名称

时间:2014-01-03 16:05:30

标签: java jodatime

我有星期几号码:2(如果星期一星期开始,则应与星期二匹配)。

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

moment().day(my number)

3 个答案:

答案 0 :(得分:36)

约达时间

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

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 enum

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

您可以直接使用特定的枚举实例,而不是像2这样的magic numberDayOfWeek枚举为每周的每一天提供了一个实例,例如DayOfWeek.TUESDAY

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

答案 1 :(得分:0)

你可以自己动手

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

这甚至不需要任何库:)

答案 2 :(得分:0)

使用Joda,您可以执行以下操作:

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

用您的语言环境替换Locale

应返回星期几的名称,例如Monday or Tuesday