目标:我想使用 Date() 将接下来 12 周的一周中的最后一天(星期日)转换为单独的字符串
我有下面这给了我正确的日期格式。我只需要关于实现目标的最佳解决方案的建议。
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
Date date = new Date(0);
System.out.println(dateFormat.format(date));
Java 的日期系统让我感到困惑,但我认为你想这样做:
1)而不是制作一个日期,而是制作一个公历。
2) Calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY) 获取本周星期日的日期。
3) 在 for 循环中,将 7 天添加到日历十二次。在每个循环上做一些事情(例如,使用 getTime() 从 GregorianCalendar 获取日期)
尝试
GregorianCalendar c = new GregorianCalendar();
for (int i = 0; i < 12;) {
c.add(Calendar.DATE, 1);
if (c.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
System.out.println(DateFormat.getDateInstance().format(c.getTime()));
i++;
}
}
首先,一周的最后一天并不总是与星期日相同,因为它取决于您使用的区域设置。
如果您使用的是 Java 8,则解决方案非常简单:
LocalDate firstJanuary = LocalDate.parse("01/01/2015",
DateTimeFormatter.ofPattern("MM/dd/yyyy"));
//last day of the week
TemporalField fieldUS = WeekFields.of(Locale.US).dayOfWeek();
LocalDate lastDayOfWeek = firstJanuary.with(fieldUS,7);
System.out.println(lastDayOfWeek);
//sunday
LocalDate sunday = firstJanuary.with(DayOfWeek.SUNDAY);
System.out.println(sunday);
并迭代到几周后,只需使用:
sunday.plusWeeks(1);