有两个日期,分别是string startDate = "2013-01-12";string stopDate = "2013-06-22";现需如下操作:
1.计算两个日期跨了多少周,跨年的情况也需要考虑进去;
2.把所跨周的每一周的最后一天(也就是周六)打印出来。----重要希望各位大神前来指点指点;感激不尽!javacalendar

解决方案 »

  1.   

    用Calendar循环,周六的打印出来不就完了,
    一周7天都是固定的,还不好算?
      

  2.   

    关注此贴,我也是新手。不知道Java有相关的时间计算类否。
      

  3.   

    /**
    * 计算时间差

    * @param beginTime
    *            开始时间,格式:yyyy-MM-dd HH:mm:ss
    * @param endTime
    *            结束时间,格式:yyyy-MM-dd HH:mm:ss
    * @return 从开始时间到结束时间之间的时间差(秒)
    */
    public static long getTimeDifference(String beginTime, String endTime) {
      long between = 0;
       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");   Date end = null;
       Date begin = null;
      try {// 将截取到的时间字符串转化为时间格式的字符串
        end = sdf.parse(endTime);
        begin = sdf.parse(beginTime);
       } catch (ParseException e) {
        e.printStackTrace();
       }   between = (end.getTime() - begin.getTime()) / 1000;// 除以1000是为了转换成秒  return between;
    }返回的是秒,换成周就简单了。
    要打印周6,循环走一遍就可以了
      

  4.   

    private static void print() { Calendar calStart = Calendar.getInstance();
    calStart.set(2013, 0, 12);
    Calendar calEnd = Calendar.getInstance();
    calEnd.set(2013, 5, 22);
    int days = 0;
    while (true) {
    days++;
    if (calStart.get(Calendar.DAY_OF_WEEK) == 7) {
    System.out.println(calStart.get(Calendar.YEAR) + "-" + (calStart.get(Calendar.MONTH) + 1) + "-" + calStart.get(Calendar.DATE));
    }
    calStart.add(Calendar.DAY_OF_YEAR, 1);
    if (calStart.after(calEnd)) {
    break;
    }
    }
    System.out.println("weeks : " + days / 7);
    }
      

  5.   

    private static void print() { Calendar calStart = Calendar.getInstance();
    calStart.set(2013, 0, 12);
    Calendar calEnd = Calendar.getInstance();
    calEnd.set(2013, 5, 22);
    int days = 0;
    while (true) {
    days++;
    if (calStart.get(Calendar.DAY_OF_WEEK) == 7) {
    System.out.println(calStart.get(Calendar.YEAR) + "-" + (calStart.get(Calendar.MONTH) + 1) + "-" + calStart.get(Calendar.DATE));
    }
    calStart.add(Calendar.DAY_OF_YEAR, 1);
    if (calStart.after(calEnd)) {
    break;
    }
    }
    System.out.println("weeks : " + days / 7);
    }
    忽略了22号,这也是周未呀!      还有怎么打印出周未这一天??
      

  6.   

    private static void print() { Calendar calStart = Calendar.getInstance();
    calStart.set(2013, 0, 12);
    Calendar calEnd = Calendar.getInstance();
    calEnd.set(2013, 5, 22);
    int days = 0;
    while (true) {
    days++;
    if (calStart.get(Calendar.DAY_OF_WEEK) == 7) {
    System.out.println(calStart.get(Calendar.YEAR) + "-" + (calStart.get(Calendar.MONTH) + 1) + "-" + calStart.get(Calendar.DATE));
    }
    calStart.add(Calendar.DAY_OF_YEAR, 1);
    if (calStart.after(calEnd)) {
    break;
    }
    }
    System.out.println("weeks : " + days / 7);
    }
    忽略了22号,这也是周未呀!      还有怎么打印出周未这一天??你自己执行一下不就知道了,所有周六都给你打印出来了,包括6月22日。
      

  7.   

    private static void print() { Calendar calStart = Calendar.getInstance();
    calStart.set(2013, 0, 12);
    Calendar calEnd = Calendar.getInstance();
    calEnd.set(2013, 5, 22);
    int days = 0;
    while (true) {
    days++;
    if (calStart.get(Calendar.DAY_OF_WEEK) == 7) {
    System.out.println(calStart.get(Calendar.YEAR) + "-" + (calStart.get(Calendar.MONTH) + 1) + "-" + calStart.get(Calendar.DATE));
    }
    calStart.add(Calendar.DAY_OF_YEAR, 1);
    if (calStart.after(calEnd)) {
    break;
    }
    }
    System.out.println("weeks : " + days / 7);
    }
    忽略了22号,这也是周未呀!      还有怎么打印出周未这一天??你自己执行一下不就知道了,所有周六都给你打印出来了,包括6月22日。
    早执行过了,你这只是判断跨了多少周,因为第一个条件根本就不成立
      

  8.   

    5L的周六的打印是正确的,
    但是计算跨过多少周我觉得有问题,假设2013-6-20到2013-6-24,实质上这已经跨过一周了。
    另外,对于跨年,计算和跨周差不多,在5L的基础上,循环内days++后判断calStart.get(Calendar.DAY_OF_YEAR)==1且days>0,跨年数加1.
    输入公历的某年某月某日,相应的计算出这一天是星期几
    至于这个更简单了,直接    public static void main(String[] arg) throws Exception
        {
            Calendar cal = Calendar.getInstance();
            // 2013年6月20
            cal.set(2013, 5, 20);
            System.out.println(cal.getTime());
            System.out.println("今天是星期" + (cal.get(Calendar.DAY_OF_WEEK) - 1));
        }
      

  9.   

    private static void print() { Calendar calStart = Calendar.getInstance();
    calStart.set(2013, 0, 12);
    Calendar calEnd = Calendar.getInstance();
    calEnd.set(2013, 5, 22);
    int days = 0;
    while (true) {
    days++;
    if (calStart.get(Calendar.DAY_OF_WEEK) == 7) {
    System.out.println(calStart.get(Calendar.YEAR) + "-" + (calStart.get(Calendar.MONTH) + 1) + "-" + calStart.get(Calendar.DATE));
    }
    calStart.add(Calendar.DAY_OF_YEAR, 1);
    if (calStart.after(calEnd)) {
    break;
    }
    }
    System.out.println("weeks : " + days / 7);
    }
    忽略了22号,这也是周未呀!      还有怎么打印出周未这一天??你自己执行一下不就知道了,所有周六都给你打印出来了,包括6月22日。
    早执行过了,你这只是判断跨了多少周,因为第一个条件根本就不成立晕死!
    这是我的执行结果2013-1-12
    2013-1-19
    2013-1-26
    2013-2-2
    2013-2-9
    2013-2-16
    2013-2-23
    2013-3-2
    2013-3-9
    2013-3-16
    2013-3-23
    2013-3-30
    2013-4-6
    2013-4-13
    2013-4-20
    2013-4-27
    2013-5-4
    2013-5-11
    2013-5-18
    2013-5-25
    2013-6-1
    2013-6-8
    2013-6-15
    2013-6-22
    weeks : 23
      

  10.   

    private static void print() { Calendar calStart = Calendar.getInstance();
    calStart.set(2013, 0, 12);
    Calendar calEnd = Calendar.getInstance();
    calEnd.set(2013, 5, 22);
    int days = 0;
    while (true) {
    days++;
    if (calStart.get(Calendar.DAY_OF_WEEK) == 7) {
    System.out.println(calStart.get(Calendar.YEAR) + "-" + (calStart.get(Calendar.MONTH) + 1) + "-" + calStart.get(Calendar.DATE));
    }
    calStart.add(Calendar.DAY_OF_YEAR, 1);
    if (calStart.after(calEnd)) {
    break;
    }
    }
    System.out.println("weeks : " + days / 7);
    }
    忽略了22号,这也是周未呀!      还有怎么打印出周未这一天??你自己执行一下不就知道了,所有周六都给你打印出来了,包括6月22日。
    早执行过了,你这只是判断跨了多少周,因为第一个条件根本就不成立晕死!
    这是我的执行结果2013-1-12
    2013-1-19
    2013-1-26
    2013-2-2
    2013-2-9
    2013-2-16
    2013-2-23
    2013-3-2
    2013-3-9
    2013-3-16
    2013-3-23
    2013-3-30
    2013-4-6
    2013-4-13
    2013-4-20
    2013-4-27
    2013-5-4
    2013-5-11
    2013-5-18
    2013-5-25
    2013-6-1
    2013-6-8
    2013-6-15
    2013-6-22
    weeks : 23
    呵呵,确实可以,估计是我这Eclipse的问题,换成myEclipse就可以了。