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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本来以为这个问题很简单的,后来发现,有问题!
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?

评分

参与人数 1技术分 +2 收起 理由
张智文 + 2

查看全部评分

4 个回复

正序浏览
月黑风高 发表于 2013-8-29 13:41
亲啊,2012-12-12的确是2012年的第347天,2012-12-31才是2012年最后一天,一共是366天(2012是闰年)
...

sorry,智商捉急了,不好意思
回复 使用道具 举报
奔跑的二叉树 发表于 2013-8-29 13:18
小弟新手,用了你这个方法结果还是:347天,可是2012不应该只有347天,这不科学啊,why? 不理解呀
...

亲啊,2012-12-12的确是2012年的第347天,2012-12-31才是2012年最后一天,一共是366天(2012是闰年)
回复 使用道具 举报
月黑风高 发表于 2013-8-29 12:55
Calendar cal = Calendar.getInstance();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");//日期格式 ...

小弟新手,用了你这个方法结果还是:347天,可是2012不应该只有347天,这不科学啊,why? 不理解呀
回复 使用道具 举报
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有对应的字段,直接调用即可。

评分

参与人数 1技术分 +2 收起 理由
张智文 + 2

查看全部评分

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