请问如何计算:某年某月某日后的第几个星期几是几号??
比如:2005年10月28号后的第一个星期天是几号?请大侠帮帮小弟看看~~~
感觉不尽啊~~~

解决方案 »

  1.   

    s=x-1+[(x-1)/4]-[(x-1)/100]+[(x-1)/400]+Cw=s%7
    其中x是公元的年数,C是从这一年的1月1日算起到这一天为止(包括这一天在内)的天数。方括号表示其中算式的整数部分,即在计算S的值时,三个方括号中只要算出商数的整数部分,把余数略去不计。求出S的值之后,除以7,余几就是星期几;余数为0就是星期日
    这个基本上准的
      

  2.   

    import java.util.Calendar;
    import java.util.Date;
    /**
    * www.urlshow.com
    */
    public class 日期判断 {
        /**
         * 
         * 功能: 获取时间
         * @param 日期 起始日期
         * @param 个数 星期个数
         * @param 星期 星期几,1=星期日,2=星期1,3=星期2,4=星期3.....
         * @return 日期
         */
        public static Date get日期(Date 日期,int 个数,int 星期){
            Calendar 日历=Calendar.getInstance();
            日历.setTime(日期);
            日历.add(Calendar.DATE,个数*7+星期-日历.get(Calendar.DAY_OF_WEEK));
            return 日历.getTime();
        }
        /**
         * 功能: 主函数
         * @param args 
         */
        public static void main(String[] args) {
            System.out.println(get日期(new Date(),1,2));
        }
    }
      

  3.   

    计算当前日期之后的第一个星期一,
    输出31号
    Mon Oct 31 22:11:03 CST 2005
      

  4.   

    谢谢 xuender(徐强) 大侠。。
    我试试看行不行。。
      

  5.   

    import java.util.*;
    public class testDate { /**
     * @param args
     */
    public static Date get(Date d,int i,int j){
    Calendar ca= Calendar.getInstance();
    ca.setTime(d);
    ca.add(Calendar.WEEK_OF_MONTH,i-1);
    ca.add(Calendar.DAY_OF_WEEK,j+1);
    return ca.getTime();
    }
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.println(get(new Date(),1,Calendar.MONDAY));
    }
    }
      

  6.   

    我发的程序都是测试过的,直接复制就可以,但是注意,编码最好使用UTF-8
      

  7.   

    照你的方法:
    import java.util.Calendar;
    import java.util.Date;
    /**
    * www.urlshow.com
    */
    public class TestDate
    {
        public static Date getDate(Date date,int off,int weekOff)
        {
            Calendar c=Calendar.getInstance();
            c.setTime(date);
            c.add(Calendar.DATE,off*7+weekOff-c.get(Calendar.DAY_OF_WEEK));
            return c.getTime();
        }
        /**
         * 功能: 主函数
         * @param args 
         */
        public static void main(String[] args) 
        {
         Date d = new Date(2005,10,8,8,10,10);
            System.out.println(getDate(d,1,2));
        }
    }10月8号第1个星期一应该是:10月10号,但它输出却是:
    Mon Nov 13 08:10:10 CST 3905
      

  8.   

    刚才那个年份设的不对,但我把它改成这样,但输出也是不对的哦Date d = new Date(2005-1900,10,8,8,10,10);
    输出是:
    Mon Nov 14 08:10:10 CST 2005
      

  9.   

    发现如果月份再减一就正确了,但我不知道为什么要这样做???Date d = new Date(2005-1900,10-1,8,8,10,10);Mon Oct 10 08:10:10 CST 2005
      

  10.   

    java中月份是0--11(从0开始,0对应1月份),所以要减1