1 问题. W( X. @: E2 P& l- ^) ^1 r5 [
以周一作为每周的开始,周日作为每周的结束。
: j, g7 q3 ?% M8 Y+ K当遇到某月的第一天非周一时,以这天作为这月第一周的开始天。
7 I4 Y, R; N2 Z当遇到某月的最后一天非周日时,以这天作为这月最后一周的结束天。
; u- E- m4 H- W, ]' J+ F0 T2 方法
, s/ l, L, }% x( x/ ~/**
* 获取当前时间为该月的第几周
* @param date
* @return
*/
public static int getWeekOfMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
//获取对应的周数
int week = calendar.get(Calendar.WEEK_OF_MONTH);
//如果当天是星期天,会按下一周计算,则需要减1
if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
week--;
}
//获取当前月份第一天
Calendar firstDayOfMonthcalendar = Calendar.getInstance();
firstDayOfMonthcalendar.setTime(monthFirstDayByDate(date));
//如果当前月1号是星期天,会按下一周计算,该月周数少算1天,则加1
if (firstDayOfMonthcalendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
week ++;
}
// 第几周
return week;
} 3 结语- C- l% K' I2 L) j* i( E- O! \3 v
知道了简单的逻辑思考就能知道一个中周的划分但是在编程实现中这需要让机器学会并且模拟出人思考的一种方式,就需要我们将自己的思想转化为一个能够具象化的东西例如数字等等。这种全链路的解决方案能够给生活中思考问题时带来启发缕清思路。 |