要检索一周的范围,只需创建一个指向一周的第一天和最后一天的对象,然后从该对象中抽出一天中的某一天。
int weekOfYear = 32;
LocalDate firstDay = new LocalDate().withWeekOfWeekyear(weekOfYear).withDayOfWeek(1);
LocalDate lastDay = new LocalDate().withWeekOfWeekyear(weekOfYear).withDayOfWeek(7);
System.out.println("Week of Year "+weekOfYear+"; "+firstDay.toString("d MMM")+" - "+lastDay.toString("d MMM"));
您也可以提取一天是这样的:
int weekStart = firstDay.getDayOfMonth();
int weekEnd = lastDay.getDayOfMonth();
然后,您可以用同样的方法在一个月内检索周为好。
int firstWeekInMonth = new LocalDate().withMonthOfYear(month).withDayOfMonth(1).getWeekOfYear();
int lastWeekInMonth = new LocalDate().withMonthOfYear(month).dayOfMonth().withMaximalValue().getWeekOfYear();
也许你可能要限制的开始和结束日期停留在每月的范围内,否则你可能会得到像'30 - 9月5日”。
这不仅不能回答这个问题(虽然它提供了很好的灵感),但它包含2个错误:逻辑表明weekEnd意味着被派生出来从lastDay,这是未使用的,不是第一天;此外,答案指的是未定义的变量“月”。我试图解决公然(但可能令人困惑)的错误被脾气暴躁的评论者拒绝。 – Lambart 2014-05-04 00:52:33
@兰巴特的确你是对的。我修复了错误并添加了一段,希望能更好地回答这个问题。不要让编辑让你失望:) – 2014-05-05 09:08:45
很好的编辑,并感谢您的鼓励。 :) – Lambart 2014-05-05 18:25:57