我想显示两个日期之间的整周开始日期。
假设我选择开始日期为2023年7月25日 - 2023年8月25日,那么它应该返回结果:
25 July 2023
2 Aug 2023
9 Aug 2023
16 Aug 2023
23 Aug 2023
如果有农历越南语或中文的lib周期日、周、月、年
List<LocalDate> weekDates = new ArrayList<>();
LocalDate tmp = LocalDate.of(2023, 7, 25);
LocalDate end = LocalDate.of(2023, 8, 25);
// Loop until we surpass end date
while(tmp.isBefore(end)) {
weekDates.add(tmp);
tmp = tmp.plusWeeks(1);
}
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd LL yyyy");
for (int i = 0; i < weekDates.size(); i++) {
String formattedString = weekDates.get(i).format(formatter);
System.out.println(formattedString);
}
您的代码对于生成两个给定日期之间每周的开始日期来说看起来基本正确。不过,有几点需要注意:
您提供的代码已生成 2023 年 7 月 25 日至 2023 年 8 月 25 日之间每周所需的开始日期。
您正在使用 DateTimeFormatter 来格式化输出日期。在您的评论中,您提到了农历周期,但您的代码使用的是公历。如果您想将这些日期转换为农历,您需要合并农历库或 API,这可能需要额外的代码。
这是您的代码,带有注释以使其清楚:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<LocalDate> weekDates = new ArrayList<>();
LocalDate tmp = LocalDate.of(2023, 7, 25);
LocalDate end = LocalDate.of(2023, 8, 25);
// Loop until we surpass the end date
while (tmp.isBefore(end)) {
weekDates.add(tmp);
tmp = tmp.plusWeeks(1);
}
// Format and print the dates
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd MMM yyyy");
for (int i = 0; i < weekDates.size(); i++) {
String formattedString = weekDates.get(i).format(formatter);
System.out.println(formattedString);
}
}
}
如果您需要将这些日期转换为农历,则需要使用特定于越南或中国农历的农历库或 API,因为农历与公历不同。