科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道一道经典的JAVA面试题

一道经典的JAVA面试题

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

一道经典的JAVA面试题

作者:csdn 来源:csdn 2009年12月17日

关键字: JavaSE java 问答

  • 评论
  • 分享微博
  • 分享邮件

一道经典的JAVA面试题

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

 

算也行.
Java code   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日是星期六。(这个可以不知道,但可以一个一个试出来,比如你假设是星期日,算出来的结果不对,你调整一下就对了) 

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章