随便给你一个日期(例如2009-8-20),问这一天是否是“星期六”?
问我的时候没什么思路,回来也没太想明白
望高手给予解答~~~~~~~~~~~~

解决方案 »

  1.   

    用Calendar就能得出结果吧.
      

  2.   

    算也行.
       public int getWeek(int dYear,int dMonth,int dDay){
          int days=0;
          int[] months={0,31,28,31,30,31,30,31,31,30,31,30,31};
          if(dYear%400==0||dYear%4==0&&dYear%100!=0){
              months[2]=29;
          }
          days=dYear*365+(dYear-1)/4-(dYear-1)/100+(dYear-1)/400;
          for(int i=1;i<dMonth;i++){
              days+=months[i];
          }
          days+=dDay+6;
          return (days)%7;
      } 
    解释一下:days=dYear*365+(dYear-1)/4-(dYear-1)/100+(dYear-1)/400;
    以公元0年为基准,看过了多少年。
    1.每一年按365天算。
    2.做调整,看经过了多少闰年。按闰年的规律做相应的调整。dDay+6是因为0年1月1日是星期六。(这个可以不知道,但可以一个一个试出来,比如你假设是星期日,算出来的结果不对,你调整一下就对了)
      

  3.   

    用Calendar怎么做
    我看了api,查不到合适的方法,
    高手指点下
      

  4.   

    用 Calendar 类就可以Calendar c = new GregorianCalendar(2008, 8, 8);   
    System.out.println("测试结果:" + c.get(Calendar.DAY_OF_WEEK));  测试结果:3 
    代表星期二,一周从周日开始
      

  5.   


    public class ttt { public static void getWeek() throws Exception{
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");  
         Calendar c = Calendar.getInstance();  
         c.setTime(format.parse("2008-08-08"));  
         int dayForWeek = 0;  
         if(c.get(Calendar.DAY_OF_WEEK) == 1){  
          dayForWeek = 7;  
         }else{  
          dayForWeek = c.get(Calendar.DAY_OF_WEEK) - 1;  
         }  
         System.out.print(dayForWeek);
    }
        public static void main(String[] args) throws Exception {
           getWeek();
        }
    }输出结果是5,所以2008年8月8日应为星期五
      

  6.   

    我的结果真的不对      你能说说为甚麽我的不对么   sun的错误?不可能吧 我的错误?也不太像啊
      

  7.   

    我知道了一月:Calendar.JANUARY = 0 
    所以8月8日应该是
    Calendar c = new GregorianCalendar(2008, 9, 8); 
    System.out.println("测试结果:" + c.get(Calendar.DAY_OF_WEEK)); 测试结果:4国外算一周从周日开始,4是星期五。但还是谢谢楼上!
      

  8.   

    仔细看了看api,发现这个问题,感谢这个帖子帮我扫除了一个盲点,!!!!
      

  9.   


    我还是错了   呵呵  真的不好意思
    应该是
    Calendar c = new GregorianCalendar(2008, 7, 8); 
    System.out.println("测试结果:" + c.get(Calendar.DAY_OF_WEEK)); 这次应该对了  哈哈  哈哈好马虎  
    测试结果6,星期日是0,星期五是6这次没错了  呵呵
      

  10.   

    月要减去1,
    结果也要减去1. Calendar calender =new GregorianCalendar(2009,month-1, 21);
     System.out.println( calender.get(Calendar.DAY_OF_WEEK)-1);
      

  11.   

    import java.util.*;
    public class Week{

         public static void main(String[] args){
          int year=2009;
          int month=7;
          int day=20;
          Week.showWeek(year,month,day);
                
         
        }
        
        public static void showWeek(int year,int month,int day){
               
              Calendar c = Calendar.getInstance();

            c.set(year, month-1, day);
            int m= c.get(Calendar.DAY_OF_WEEK);         
           String s="";
           switch(m)
           {
           case 1:s="日";break;
           case 2:s="一";break;
           case 3:s="二";break;
           case 4:s="三";break;
           case 5:s="四";break;
           case 6:s="五";break;
           case 7:s="六";break;
                  
           
          }
           
           
            
            
            System.out.println(year+"年"+month+"月"+day+"日是星期"+s); 
               
            }
    这程序肯定对
      

  12.   

    熟悉了 Calendar  的用法
      

  13.   

    SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
    System.out.println((new SimpleDateFormat("yyyy年MM月dd日 EEE")).format(sf.parse("2009-08-20")));
      

  14.   


    public static void main(String[] args){
    String d="2009-8-24";
    SimpleDateFormat sdf=new SimpleDateFormat("EEE");
    try{
    String s=sdf.format(java.sql.Date.valueOf(d));
    System.out.println(s);
    }catch(Exception e){
    }
    }输出星期一
      

  15.   

    qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
      

  16.   

    Calendar now = Calendar.getInstance();
    now.set(2009, 7, 20);   //月是按国外来算了,从0到11,0代表我们这边的12月,1代表2月,依次类推
    System.out.println(now.get(Calendar.DAY_OF_WEEK)); //按国外来,我们这这的星期天代表数字1,星期一代表2,依次类推//如题得到结果是5,就是星期四!~
      

  17.   

     unix好象是从1970年开始的。但是用cal命令能打印出1752 年的9月windows 好象不行
      

  18.   

    为什么我运行结果为:3
    而且我测试了今天是星期几?代码如下
    Calendar c = new GregorianCalendar(2009, 8, 25);  
    System.out.println("测试结果:" + c.get(Calendar.DAY_OF_WEEK)); 
    结果运行为:6
    问题:今天明明是星期二,为什么会这样了?难道机器也出问题?   
      

  19.   

    先知道一个基准日,然后相减->除7->算余数当然,还要考虑闰年的作用
      

  20.   


    这个问题很基本啊
    Calendar类很常用的啊
      

  21.   

    Calendar c = new GregorianCalendar(2009, 7, 25); 
      

  22.   


    Calendar c = Calendar.getInstance();
    //2008-8-20
    c.set(Calendar.YEAR, 2008);
    c.set(Calendar.MONTH, 7);
    c.set(Calendar.DAY_OF_MONTH, 20);//输出结果是:4(星期四),星期天是7这和Calendar所处Lacal有关,有些星期天是0
    System.out.println(c.get(Calendar.DAY_OF_WEEK));
      

  23.   

    星期天是1,星期六是7.月份从0开始,所以2009-8-25计算时应该使用2009-7-25
    Calendar c = new GregorianCalendar(2009, 7, 25);  
    System.out.println("result:" + c.get(Calendar.DAY_OF_WEEK));
    计算结果是3,正确
      

  24.   

    Calendar是可以设置一周的第一天是周几的.
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    Calendar c = Calendar.getInstance(); 
    try {
    c.setTime(df.parse("2008-08-20"));
    c.setFirstDayOfWeek(Calendar.MONDAY); //设置周一为一周的第一天
    System.out.println(c.get(Calendar.DAY_OF_WEEK));
    } catch (ParseException e) {
    e.printStackTrace();
    }