问题描述
弱弱的请教下: 如何判断两个时间是否在同一周,(周一是开始,周日是结束)?
解决方案
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;}}
解决方案二:
你取date在一年中的周数啊,周数相等。不就OK了
解决方案三:
Calendar c = Calendar.getInstance();c.add(Calendar.DAY_OF_MONTH,-1); int week = c.get(c.WEEK_OF_MONTH);System.out.println(week);两天的week值一致,表示在同一周,周一--周日.
解决方案四:
select 1 from dual where to_char(to_date('20110113','yyyymmdd'),'YYYYWW') = to_char(to_date('20110113','yyyymmdd'),'YYYYWW')
解决方案五:
(时间a.gettime-时间b.gettime)的绝对值<7天的毫秒数