A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© breaveheart 中级黑马   /  2013-8-7 09:45  /  1740 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 breaveheart 于 2013-8-7 10:15 编辑

  1. <P>import java.util.*;
  2. import java.text.*;</P>
  3. <P>//计算任意年的2月份有多少天?
  4. class DateTest2
  5. {
  6. public static void main(String[] args)
  7. {
  8. int a = 2015;//输入想验证的年份
  9. setYear(a);
  10. }
  11. public static void setYear(int a)
  12. {
  13. int year = a;
  14. Calendar c = Calendar.getInstance();
  15. c.set(year,3,1);
  16. c.add(Calendar.DAY_OF_MONTH,-1);
  17. System.out.println("验证set:"+c.get(Calendar.YEAR)+"年"+c.get(Calendar.MONTH)+"月"+c.get(Calendar.DAY_OF_MONTH)+"日");
  18. System.out.print("您输入"+year+"年的2月份有 ");
  19. System.out.println((int)(c.get(Calendar.DAY_OF_MONTH))+" 天");
  20. }
  21. }
  22. </P>
复制代码

求教啊,我的代码怎么会输出2月有31天啊。。。。昏死

6 个回复

倒序浏览
因为3代表的是四月,最后算出的是三月的天数。其实有一个更简单的方法
int getActualMaximum(int field)
          给定此 Calendar 的时间值,返回指定日历字段可能拥有的最大值
getActualMaximum(Calendar.DAY_OF_MONTH)就搞定了
回复 使用道具 举报 1 0
public void findDayOfMonth(int year,int month)
        {
                Calendar cale=Calendar.getInstance();
               
                cale.set(year,month,1);
               
                cale.add(Calendar.DAY_OF_MONTH,-1);
               
                int day=cale.get(Calendar.DAY_OF_MONTH);
                System.out.println(day);
        }


你可以调用这段代码,只需要给定年和月即可
回复 使用道具 举报
薛淑凯 发表于 2013-8-7 10:06
因为3代表的是四月,最后算出的是三月的天数。其实有一个更简单的方法
int getActualMaximum(int field)
  ...

这个方法好赞,谢谢啦。现在懂了:lol
回复 使用道具 举报
哪颗最亮的星星 发表于 2013-8-7 10:14
public void findDayOfMonth(int year,int month)
        {
                Calendar cale=Calendar.getInstance();

其实我们两个的方法是一样的,只是我为了调试错误所以输出语句验证的东西多了点。
不过谢谢啦。:)
回复 使用道具 举报
这个怎么回事?试了下    怎么是31天?
回复 使用道具 举报
xkfxm 发表于 2013-8-7 10:58
这个怎么回事?试了下    怎么是31天?

哈哈,是吧。其实是老外定义的月份问题。3表示的是四月,所以这个函数里我要调用3月需要用2来表示。:lol
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马