cheng_0938 2011-01-13 10:36
浏览 215
已采纳

如何判断两个时间是否是从周一开始到周日结束

弱弱的请教下: 如何判断两个时间是否在同一周,(周一是开始,周日是结束)?

  • 写回答

5条回答 默认 最新

  • ageofnodoubt 2011-01-13 14:18
    关注

    [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]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度