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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 敗唫①輩ふ 于 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;


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

评分

参与人数 1技术分 +1 收起 理由
李江 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
xh396660787 发表于 2013-10-21 21:57
好像Calendar和GregorianCalendar类中有类似的方法求某一日期是一年之中第几天。不过好像没有将date对象转 ...

太谢谢了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马