正常的话应该会显示“还未出生这个分支”56天哪来的。

解决方案 »

  1.   

    年份 yyyy
      

  2.   

    很明显啊,是你获取的生日日期转换为日期。格式地方错了,你输入的3月1日,后面olddate确是12月31日
      

  3.   

        public static void main(String[] args) throws ParseException {
            System.out.println("填写生日,格式XXXX年XX月XX日");
            Scanner sc = new Scanner(System.in, "GBK");
            String str = sc.next();
            //获取生日 
            System.out.println("你的生日为:" + str);
            //获取当前日期
            Date nowDate = new Date();
            //设置日期格式
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
            //将日期从毫秒转制为字符串
            String now = sdf.format(nowDate);
            System.out.println("现在时间是:" + now);
            //将获取的生日日期转换为Date
            Date oldDate = sdf.parse(str);
            //将date转换为年月日字符串格式
            String old = sdf.format(oldDate);
            System.out.println("olddate:为" + oldDate);
            System.out.println("old为:" + old);
            long birthday = oldDate.getTime();
            long newday = nowDate.getTime();
            long day = newday - birthday;
            if (day < 0) {
                System.out.println("你还没出生吧");
            }else 
            System.out.println("浪费了:" + day / 1000 / 60 / 60 / 24 + "天");
        }