黑马程序员技术交流社区

标题: 关于计算来到这世界多少天的问题,,两种方式答案不同??!! [打印本页]

作者: small_horse    时间: 2015-9-14 23:56
标题: 关于计算来到这世界多少天的问题,,两种方式答案不同??!!
//下面用simpleDateFormate和calendar类两种方式获取生日毫秒值结果差了很多天啊????!!!!
//算算你来这个世界多少天了????
public class Test1 {
        public static void main(String[] args) throws ParseException {

                // 获取当前时间毫秒值
                Date now = new Date();
                long nowTime = now.getTime();
                System.out.println(nowTime);
                // 获取生日的毫秒值-----------方式一    //9363天
               
                 /* String birthday = "1990年07月09日";
                  SimpleDateFormat dfs = new SimpleDateFormat("YY年MM月dd日");
                  //将字符串转成日期对象
                  Date parse =dfs.parse(birthday);
                  //获取生日那天的毫秒值
                  long birthdayTime = parse.getTime();
                  System.out.println(birthdayTime);*/
                 
                // 获取生日的毫秒值-----------方式二        //9161天
                Calendar instance = Calendar.getInstance();
                instance.set(1990, 7, 9);
                long birthdayTime = instance.getTime().getTime();
                // 做差
                long time = nowTime - birthdayTime;
                // 换算成天数
                System.out.println(time / 1000 / 60 / 60 / 24);
        }

}

作者: xiaoya0o0o    时间: 2015-9-14 23:56
Calendar的set方法,其中月份的值是0-11分别代表12个月
Calendar instance = Calendar.getInstance();
                instance.set(1990, 7-1, 9);

  1. /*
  2. * 算一下你来到这个世界多少天?
  3. *
  4. *
  5. */
  6. public class Demo {
  7.         public static void main(String[] args) throws ParseException {
  8.                 Date date1 = new Date();
  9.                 String str = "1988-07-22";
  10.                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  11.                
  12.                 Date date2 =sdf.parse(str);
  13.                
  14.                 long time1 = date1.getTime();//现在的毫秒值
  15.                 long time2 = date2.getTime();//生日的毫秒值
  16.                
  17.                 long time = time1 - time2;
  18.                 System.out.println("来到这个世界:" + (time / 1000 / 3600 / 24) + " 天");
  19.                 System.out.println("来到这个世界:" + (time / 1000 / 3600 / 24 / 365) + " 年");
  20.         }
  21. }
复制代码

作者: 夸克    时间: 2015-9-15 16:37
       Calendar的set方法,其中月份的值是0-11分别代表12个月,所以你设置那里就用错了。另外你这两个方法一个用了SimpleDateFormat格式,另一个没有,也会有影响。
作者: fdg666    时间: 2015-9-17 23:48
  Calendar对象里面月份的值是从0到11,0代表1月以此类推,你设置的月份有问题。
作者: 920792433    时间: 2015-9-23 21:18
  1. public class DataTest {
  2.         public static void main(String[] args) throws ParseException {
  3.                 String time = "2014-03-11";
  4.                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  5.                 Date date = sdf.parse(time);
  6.                
  7.                 System.out.println( getDays(date) );
  8.         }
  9.        
  10.         //完成获取指定的日期 与今天相距多少天
  11.         public static long getDays(Date date) throws ParseException{
  12.                 Date currentDate = new Date();
  13.                 long seconds = currentDate.getTime() - date.getTime();
  14.                 long day = seconds/1000/60/60/24;
  15.                 return day;
  16.         }
  17. }
复制代码

作者: ringfingers    时间: 2015-9-26 23:12
然而大牛们被没有被楼主采取意见




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