import java.util.Calendar;public class Test
{
public static void main(String[] args)
{
Calendar c = Calendar.getInstance();
c.set(2003,9,6);
System.out.println(c.get(Calendar.DAY_OF_WEEK));
}
}获得2003年6月9号是星期几,这个地方JDK的API错了。

解决方案 »

  1.   

    多谢楼上的,我要求的是算法,不是具体的API!
      

  2.   

    楼上错了
    c.set(2003,9,6)设定的日期为2003年10月6日
      

  3.   

    public static int getLocalWeekDay()
    {
        Date date = new Date();
                 Calendar cal=Calendar.getInstance();
                 cal.setTime(date);
                 int posOfWeek=cal.get(Calendar.DAY_OF_WEEK);
            
                 posOfWeek--; //Calendar格式转化成普通格式  0星期天, 1 星期一...
                 return posOfWeek;        
    }
      

  4.   

    1、可选择一个基准点,如1900年1月1日,以一个变量存储基准日是星期几;
    2、此时,算法转为计算某日与基准日之间的日差;
    3、提供判断闰年的方法如下:
        //判断iYear是不是闰年
        private static boolean isLeapYear( int iYear )
        {
            return ( ! ( ( iYear % 4 ) == 0 ) && ( ( iYear % 100 ) == 0 ) )
            || ! ( ( iYear % 400 ) == 0 );
        }
    4、提供计算某年某月天数的方法:
        private static int getMonthDays( int iYear, int iMonth )
        {
            switch ( iMonth )
            {
                case 1 :
                case 3 :
                case 5 :
                case 7 :
                case 8 :
                case 10 :
                case 12 :
                    return 31;
                case 4 :
                case 6 :
                case 9 :
                case 11 :
                    return 30;
                case 2 :
                    return isLeapYear( iYear ) ? 29: 28;
            }
            return 0;
        }
    5、综合以上方法,应可算出1900年以后任意日期的星期数。
      

  5.   

    楼主要的是具体的算法.......
    我也想知道当然,如果哪位大侠提供 JDK原程序就都清楚了 :)
      

  6.   

    嗯, wangwenyou(王文友)的方法可行.
      

  7.   

    可以看JDK安装目录下的src.zip.
    java\util\Calendar.java
      

  8.   

    SimpleDateFormat 类提供是周几的方法
    SimpleDateFormat formatter = new SimpleDateFormat("E");
       String mDateTime=formatter.format(cal.getTime());
       out.println(mDateTime);
      

  9.   

    mydate= myFormatter.parse("2098-12-23");
    SimpleDateFormat formatter4 = new SimpleDateFormat("E");
    String mydate3=formatter4.format(mydate);
    out.println(mydate3);
    out.println("<br>");
      

  10.   

    星期万年历 
    计算星期有一种非常简单实用的办法,只要通过下面的两个式子,不管哪年的元旦是星星期几一下子就明朗了,将一年的第一天把握住了,还愁这一年?! 
    公式非常简单:只要知道公元的哪一年的数字,并将其用y来表示,将有如下公式: 
    f = (y - 1) * (1 + 1 / 4 - 1 / 100 + 1 / 400) + 1 
    k = f - Int(f / 7) * 7 
    k如果为0则表示星期日,为其他什么数值,将是星期几。 
      

  11.   


    long f,k 
    long z=2003
    f = (z - 1) * (1 + 1 / 4 - 1 / 100 + 1 / 400) + 1 
    k = f - Int(f / 7) * 7 
    k = 3
      

  12.   

    ok,括号里面的那个值就是1.2425,那么整个算法就是
    算z年的元旦是星期几?
    那么
    int  f=(z-1) * 1.12425 + 1;
    int  k= f-int(f/7)*7;
    k=0 星期日,依次类推,多谢各位!