黑马程序员技术交流社区

标题: 关于输入规定格式日期程序计算出该天是这一年的第几天... [打印本页]

作者: 敗唫①輩ふ    时间: 2013-10-21 21:17
标题: 关于输入规定格式日期程序计算出该天是这一年的第几天...
本帖最后由 敗唫①輩ふ 于 2013-10-21 22:33 编辑

       编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,并且计算出是一年中的第几天。
关于这个问题,我想知道还有没有更简单的方法的,有高手指点指点吗?我自己想出来的办法实在是麻烦。我自己的代码如下:




public class Test9 {
        
        public static void main (String args[]){
                Scanner scanner = new Scanner(System.in);
                System.out.println("请输入'yyyy-MM-dd'格式的日期:");
                String date=scanner.next();
                int num = getDays(date);
                System.out.println(date+"是该年的第"+whichDay+"天");
                System.out.println(date+"是该年的第"+num+"天");

public static int getDays(String dateStr){
                String[] date = dateStr.split("-");//yyyy-MM-dd
                int sum=0;
                int year=Integer.valueOf(date[0]);
                int month=Integer.valueOf(date[1]);
                int day=Integer.valueOf(date[2]);
                if ((year % 4 == 0 && year % 100 != 0)|| (year % 400 == 0 && year % 3200 != 0) || year % 86400 == 0) {
                        for (int i = 0; i < month; i++) {
                                switch (i) {
                                case 1:
                                case 3:
                                case 5:
                                case 7:
                                case 8:
                                case 10:
                                case 12:
                                sum += 31;
                                continue;
                                case 4:
                                case 6:
                                case 9:
                                case 11:
                                sum+=30;
                                continue;
                                case 2:
                                sum+=29;
                                continue;
                                }
                        }
                }else{
                        for (int i = 0; i < month; i++) {
                                switch (i) {
                                case 1:
                                case 3:
                                case 5:
                                case 7:
                                case 8:
                                case 10:
                                case 12:
                                sum += 31;
                                continue;
                                case 4:
                                case 6:
                                case 9:
                                case 11:
                                sum+=30;
                                continue;
                                case 2:
                                sum+=28;
                                continue;
                                }
                        }
                }
                return sum+day;


我是通过闰年和平年来计算的。感觉这样好麻烦。求指点!


作者: 敗唫①輩ふ    时间: 2013-10-21 22:03
xh396660787 发表于 2013-10-21 21:57
好像Calendar和GregorianCalendar类中有类似的方法求某一日期是一年之中第几天。不过好像没有将date对象转 ...

太谢谢了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2