【问题标题】:From the day week number get the day name with Joda Time从日期周数获取带有 Joda Time 的日期名称
【发布时间】:2014-01-21 08:50:34
【问题描述】:

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

有没有一种方法可以使用 Joda Time 获取 Java 中的日期名称? 在 javascript 中,使用 moment.js 很容易做到这一点:

moment().day(my number)

【问题讨论】:

    标签: java jodatime


    【解决方案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 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]);
    

    【讨论】:

    • 太棒了!感谢您提供完整的答案。
    【解决方案2】:

    你可以自己做

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

    这甚至不需要任何库:)

    【讨论】:

    • 是的,没有库,但在国际化场景中不可用。顺便说一句,您的解决方案不适合所需的索引顺序。 OP 想要 2 号,那么您的解决方案将在星期三而不是星期二产生。
    • 这包括英语。使用 Joda-Time 可以将本地化为其他语言。
    【解决方案3】:

    使用 Joda 你可以做到这一点:

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

    Locale 替换为您的区域设置。

    应返回工作日名称,例如 Monday or Tuesday

    【讨论】:

      猜你喜欢
      • 2014-03-24
      • 2021-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-24
      • 1970-01-01
      • 2020-12-25
      • 2014-04-08
      相关资源
      最近更新 更多