是否可以使用Joda-Time解析日期并提取月份周.我知道有可能在一年中这么做,但我找不到如何/如果有可能提取一个月的一周.
示例:2014-06_03其中03是本月的第三周
DateTime dt = new DateTime();
String yearMonthWeekOfMonth = dt.toString("<PATTERN for the week of month>");
Run Code Online (Sandbox Code Playgroud)
我尝试过"yyyyMMW"模式,但不接受.
当前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);
}
Run Code Online (Sandbox Code Playgroud)
用法:
DateTime dt = new DateTime();
String dateAsString = printDate(dt);
Run Code Online (Sandbox Code Playgroud)
2)您可以使用 Java 8,因为 Java 的 API 支持月份字段。
java.time.LocalDateTime date = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM_W");
System.out.println(formatter.format(date));
Run Code Online (Sandbox Code Playgroud)
Joda中的这个选项可能更好:
Weeks.weeksBetween(date, date.withDayOfMonth(1)).getWeeks() + 1
Run Code Online (Sandbox Code Playgroud)