在看到这样的效果的时候,我们首先想到的就是需要拿到当前的日期和之后多少天的日期,在这里,我拿到的当前日期后的一周的日期
//用来存放日期的集合
List<String> dateList = new ArrayList<>();
// 时间表示格式可以改变,yyyyMMdd需要写例如20160523这种形式的时间
@SuppressLint("SimpleDateFormat")
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date2 = new Date();
String str = sdf.format(date2);
// 将字符串的日期转为Date类型,ParsePosition(0)表示从第一个字符开始解析
Date date = sdf.parse(str, new ParsePosition(0));
Calendar calendar = Calendar.getInstance();//获取日历
calendar.setTime(date);//当date的值是当前时间,则可以不用写这段代码。
for (int i = 0; i < 7; i++) {
Date date1 = calendar.getTime();
calendar.add(Calendar.DATE, 1);
dateList.add(sdf.format(date1));
}
Log.e("时间", dateList.toString());
至此,我们就拿到了时间的一个集合,接下来需要做的就是将我们拿到的集合再去进行转换成周几的格式进行上下展示
/**
* 计算周几
*/
public static String getWeek(String dateTime) {
String week = "";
String today = "";
today = getNowDate();
if (dateTime.equals(today)) {
week = "今天";
} else {
switch (getDayOfWeek(dateTime)) {
case 1:
week = "周日";
break;
case 2:
week = "周一";
break;
case 3:
week = "周二";
break;
case 4:
week = "周三";
break;
case 5:
week = "周四";
break;
case 6:
week = "周五";
break;
case 7:
week = "周六";
break;
}
}
return week;
}
//获取当前日期
public static String getNowDate() {
@SuppressLint("SimpleDateFormat")
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(new Date());
}
//计算星期几
private static int getDayOfWeek(String dateTime) {
Calendar cal = Calendar.getInstance();
if (dateTime.equals("")) {
cal.setTime(new Date(System.currentTimeMillis()));
} else {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
Date date;
try {
date = sdf.parse(dateTime);
} catch (ParseException e) {
date = null;
e.printStackTrace();
}
if (date != null) {
cal.setTime(new Date(date.getTime()));
}
}
return cal.get(Calendar.DAY_OF_WEEK);
}
到这里所有的功能就都实现了,也就达到了我们所想要实现的效果