Java中获取本周内所有日期

2025-02-01 07:45:33
推荐回答(3个)
回答1:

import java.text.SimpleDateFormat;
import java.util.Calendar;

public class DataTest {

public static void main(String[] args) {
printWeekdays();
}

private static final int FIRST_DAY = Calendar.MONDAY;

private static void printWeekdays() {
Calendar calendar = Calendar.getInstance();
setToFirstDay(calendar);
for (int i = 0; i < 7; i++) {
printDay(calendar);
calendar.add(Calendar.DATE, 1);
}
}

private static void setToFirstDay(Calendar calendar) {
while (calendar.get(Calendar.DAY_OF_WEEK) != FIRST_DAY) {
calendar.add(Calendar.DATE, -1);
}
}

private static void printDay(Calendar calendar) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd EE");
System.out.println(dateFormat.format(calendar.getTime()));
}

}

回答2:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
// 今天是一周中的第几天
int dayOfWeek = c.get(Calendar.DAY_OF_WEEK );

if (c.getFirstDayOfWeek() == Calendar.SUNDAY) {
c.add(Calendar.DAY_OF_MONTH, 1);
}
// 计算一周开始的日期
c.add(Calendar.DAY_OF_MONTH, -dayOfWeek);

for (int i=1;i<=7;i++) {
c.add(Calendar.DAY_OF_MONTH, 1);
System.out.println(sdf.format(c.getTime()));
}

回答3:

public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
int date = cal.get(Calendar.DAY_OF_MONTH);
int n = cal.get(Calendar.DAY_OF_WEEK);
if (n == 1) {
n = 7;
} else {
n = n - 1;
}
System.out.println("当天为本周第" + n + "天");
// 日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for (int i = 1; i <= 7; i++) {
cal.set(Calendar.DAY_OF_MONTH, date + i - n);
System.out.println("本周第" + i + "天:" + sdf.format(cal.getTime()));
}
}

结果:
当天为本周第3天
本周第1天:2014-02-17
本周第2天:2014-02-18
本周第3天:2014-02-19
本周第4天:2014-02-20
本周第5天:2014-02-21
本周第6天:2014-02-22
本周第7天:2014-02-23