需求: 给定需要的星期, 给定时间 ,需要显示指定时间在每个星期的时间信息(包含年月日信息)

1. 显示当前系统的时间信息

SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss EEEE");
// 打印结果
// 2020-06-10 23:04:22 星期三

2. 需要提前设置下当前每周从周一开始计算, 不然一些国家从周日开始计算,会搞乱问题

calendar.setFirstDayOfWeek(Calendar.MONDAY);

3. 具体操作代码

 `
long timeInMillisNow = calendar.getTimeInMillis();
int startH = 18;
int startM = 30;
int[] array = {
		Calendar.MONDAY, Calendar.TUESDAY,
		Calendar.WEDNESDAY, Calendar.THURSDAY,
		Calendar.FRIDAY, Calendar.SATURDAY,
		Calendar.SUNDAY,
};

long nextWeekTimes = 7 * 24 * 60 * 60;
calendar.setFirstDayOfWeek(Calendar.MONDAY);
for (int j = 0; j < array.length; j++) {
//				instance.clear(Calendar.DAY_OF_WEEK);
//				instance.clear(Calendar.HOUR);
//				instance.clear(Calendar.MINUTE);
	calendar.set(Calendar.DAY_OF_WEEK, array[j]);
	calendar.set(Calendar.SECOND, 0);
	calendar.set(Calendar.HOUR_OF_DAY, startH);
	calendar.set(Calendar.MINUTE, startM);

	String format1 = sf.format(calendar.getTime());
	long diff = (calendar.getTimeInMillis() - timeInMillisNow) / 1000;
	if (diff < 0) {
		diff += nextWeekTimes;
	}
	JLog.i(j+" " + format1 + "  " + diff);
}`

打印信息如下

2020-06-08 18:30:00 星期一  415538
2020-06-09 18:30:00 星期二  501938
2020-06-10 18:30:00 星期三  588338
2020-06-11 18:30:00 星期四  69938
2020-06-12 18:30:00 星期五  156338
2020-06-13 18:30:00 星期六  242738
2020-06-14 18:30:00 星期日  329138

这里特别要注意一个地方 Calendar.HOUR_OF_DAY, 这里的意思是时间按照24小时来设置, 之前没注意 一直用Calendar.HOUR 设置时间,导致设置的时间只要超过12, 如13点, 就会跳到第二天时间, 很是头大

打印信息如下

2020-06-09 06:30:00 星期二  458105
2020-06-09 18:30:00 星期二  501305
2020-06-11 06:30:00 星期四  26105
2020-06-11 18:30:00 星期四  69305
2020-06-13 06:30:00 星期六  198905
2020-06-13 18:30:00 星期六  242105
2020-06-15 06:30:00 星期一  371705