是否可以使用Joda-Time解析日期并提取月份周 . 我知道有可能在一年中这么做,但我找不到如何/如果有可能提取一个月的一周 .
示例:2014-06_03其中03是本月的第三周
DateTime dt = new DateTime(); String yearMonthWeekOfMonth = dt.toString("<PATTERN for the week of month>");
我尝试过“yyyyMMW”模式,但不接受 .
当前 joda-time 版本不支持星期几,因此您应该使用一些解决方法 .1) 例如,您可以使用下一个方法:
joda-time
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));
Joda中的这个选项可能更好:
Weeks.weeksBetween(date, date.withDayOfMonth(1)).getWeeks() + 1
对于你不喜欢计算的情况:
DateTime date = new DateTime(); Calendar calendar = Calendar.getInstance(); calendar.setTime(date.toDate()); int weekOfMonth = calendar.get(Calendar.WEEK_OF_MONTH);
3 回答
当前
joda-time
版本不支持星期几,因此您应该使用一些解决方法 .1) 例如,您可以使用下一个方法:
用法:
2) 您可以使用Java 8,因为Java的API支持星期几字段 .
Joda中的这个选项可能更好:
对于你不喜欢计算的情况: