黑马程序员技术交流社区

标题: 输入一个日期,计算是一年的第几天的问题 [打印本页]

作者: 奔跑的二叉树    时间: 2013-8-29 12:45
标题: 输入一个日期,计算是一年的第几天的问题
本来以为这个问题很简单的,后来发现,有问题!
package cn.baidu.hao;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Scanner;


public class time {
        public static void main(String[] args) {
                        Scanner scan=new Scanner(System.in);
                        System.out.println("请按照yyyy-MM-dd格式输入一个日期");
                        String inputstr=scan.nextLine();
                        String startstr=inputstr.substring(0, 4)+"-01-01";
                        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
                       
                        java.util.Date now;
                        java.util.Date inputdate;
                        long l;
                        try {
                                        now = df.parse(startstr);
                                        inputdate= df.parse(inputstr);
                                        l=inputdate.getTime()-now.getTime();//这里的时间差是毫秒,两个时间点分别到公元元年的时间差相减
                                        System.out.println("这是一年中的第"+(l/(24*60*60*1000)+1)+"天");
                                  }
                        catch (ParseException e) {
                                        e.printStackTrace();
                                  }
        }




}

结果是:
请按照yyyy-MM-dd格式输入一个日期
2012-12-12
这是一年中的第347天


按说是2012-12-12减去2012-01-01啊,咋跑出来个347,why?

作者: 月黑风高    时间: 2013-8-29 12:55
Calendar cal = Calendar.getInstance();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");//日期格式化辅助类
cal.setTime(df.parse(String类型字符串日期));
//当前年的第几天
int day_of_year = cal.get(Calendar.DAY_OF_YEAR);
亲,Calendar有对应的字段,直接调用即可。
作者: 奔跑的二叉树    时间: 2013-8-29 13:18
月黑风高 发表于 2013-8-29 12:55
Calendar cal = Calendar.getInstance();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");//日期格式 ...

小弟新手,用了你这个方法结果还是:347天,可是2012不应该只有347天,这不科学啊,why? 不理解呀

作者: 月黑风高    时间: 2013-8-29 13:41
奔跑的二叉树 发表于 2013-8-29 13:18
小弟新手,用了你这个方法结果还是:347天,可是2012不应该只有347天,这不科学啊,why? 不理解呀
...

亲啊,2012-12-12的确是2012年的第347天,2012-12-31才是2012年最后一天,一共是366天(2012是闰年)

作者: 奔跑的二叉树    时间: 2013-8-29 16:41
月黑风高 发表于 2013-8-29 13:41
亲啊,2012-12-12的确是2012年的第347天,2012-12-31才是2012年最后一天,一共是366天(2012是闰年)
...

sorry,智商捉急了,不好意思





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