弱弱的请教下: 如何判断两个时间是否在同一周,(周一是开始,周日是结束)?
[code="java"]
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Test {
private static final DateFormat datetimeDf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/**
* @param args
*/
public static void main(String[] args) {
try {
// 定义两个时间
String dateStr1 = "2010-01-27 00:00:00";
String dateStr2 = "2010-01-30 23:59:59";
Date date1 = datetimeDf.parse(dateStr1);
Date date2 = datetimeDf.parse(dateStr2);
// 比较
System.out.println(Test.compare(date1, date2) ? "两个时间在同一周" : "两个时间不在同一周");
} catch (ParseException e) {
e.printStackTrace();
}
}
/**
* 判断两个时间是否在同一周
*
* @param firstDate
* @param secondDate
* @return
* @throws ParseException
*/
public static boolean compare(Date firstDate, Date secondDate) throws ParseException {
/** 以下先根据第一个时间找出所在周的星期一、星期日, 再对第二个时间进行比较 */
Calendar calendarMonday = Calendar.getInstance();
calendarMonday.setTime(firstDate);
// 获取firstDate在当前周的第几天. (星期一~星期日:1~7)
int monday = calendarMonday.get(Calendar.DAY_OF_WEEK);
if (monday == 0) monday = 7;
// 星期一开始时间
calendarMonday.add(Calendar.DAY_OF_MONTH, - monday + 1);
calendarMonday.set(Calendar.HOUR, 0);
calendarMonday.set(Calendar.MINUTE, 0);
calendarMonday.set(Calendar.SECOND, 0);
// 星期日结束时间
Calendar calendarSunday = Calendar.getInstance();
calendarSunday.setTime(calendarMonday.getTime());
calendarSunday.add(Calendar.DAY_OF_MONTH, 6);
calendarSunday.set(Calendar.HOUR, 23);
calendarSunday.set(Calendar.MINUTE, 59);
calendarSunday.set(Calendar.SECOND, 59);
System.out.println("星期一开始时间:" + datetimeDf.format(calendarMonday.getTime()));
System.out.println("星期日结束时间:" + datetimeDf.format(calendarSunday.getTime()));
// 比较第二个时间是否与第一个时间在同一周
if (secondDate.getTime() >= calendarMonday.getTimeInMillis() &&
secondDate.getTime() <= calendarSunday.getTimeInMillis()) {
return true;
}
return false;
}
}
[/code]
(时间a.gettime-时间b.gettime)的绝对值<7天的毫秒数
[code="java"]
select 1 from dual where to_char(to_date('20110113','yyyymmdd'),'YYYYWW') = to_char(to_date('20110113','yyyymmdd'),'YYYYWW')
[/code]
[code="java"]Calendar c = Calendar.getInstance();
c.add(Calendar.DAY_OF_MONTH,-1);
int week = c.get(c.WEEK_OF_MONTH);
System.out.println(week);[/code]
两天的week值一致,表示在同一周,周一--周日.
你取date在一年中的周数啊,周数相等。不就OK了