首页 文章

Joda-Time获得一周的一周

提问于
浏览
6

是否可以使用Joda-Time解析日期并提取月份周 . 我知道有可能在一年中这么做,但我找不到如何/如果有可能提取一个月的一周 .

示例:2014-06_03其中03是本月的第三周

DateTime dt = new DateTime();
String yearMonthWeekOfMonth = dt.toString("<PATTERN for the week of month>");

我尝试过“yyyyMMW”模式,但不接受 .

3 回答

  • 4

    当前 joda-time 版本不支持星期几,因此您应该使用一些解决方法 .
    1) 例如,您可以使用下一个方法:

    static DateTimeFormatter FORMATTER = DateTimeFormat.forPattern("yyyy-MM_'%d'");
       static String printDate(DateTime date)
       {
          final String baseFormat = FORMATTER.print(date); // 2014-06_%d 
          final int weekOfMonth = date.getDayOfMonth() % 7;
          return String.format(baseFormat, weekOfMonth);
       }
    

    用法:

    DateTime dt = new DateTime();
    String dateAsString = printDate(dt);
    

    2) 您可以使用Java 8,因为Java的API支持星期几字段 .

    java.time.LocalDateTime date = LocalDateTime.now();
      DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM_W");
      System.out.println(formatter.format(date));
    
  • 5

    Joda中的这个选项可能更好:

    Weeks.weeksBetween(date, date.withDayOfMonth(1)).getWeeks() + 1
    
  • 0

    对于你不喜欢计算的情况:

    DateTime date = new DateTime();
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date.toDate());
        int weekOfMonth = calendar.get(Calendar.WEEK_OF_MONTH);
    

相关问题