黑马程序员技术交流社区

标题: 关于计算出生到现在多少年的问题..... [打印本页]

作者: a292723685    时间: 2016-3-30 12:56
标题: 关于计算出生到现在多少年的问题.....
导师代码
        public static void main(String[] args) throws ParseException {
                String birthday = "1991年12月16日";
                String today = "2016年03月28日";
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
                Date d1 = sdf.parse(birthday);
                Date d2 = sdf.parse(today);
                long time = d2.getTime() - d1.getTime();
                System.out.println(time/1000/3600/24/365);
我的代码
                public static void main(String[] args) throws ParseException {
                String a = "1991/12/16";
                SimpleDateFormat b = new SimpleDateFormat("yyyy/MM/dd");
                Date c = b.parse(a);
                String d = String.valueOf(c.getTime());
                String f = String.valueOf(System.currentTimeMillis());
                BigDecimal g = new BigDecimal(d);
                BigDecimal h = new BigDecimal(f);
                long w = Long.parseLong(h.subtract(g).toString());
                System.out.println(w / 1000/60/60/24/365);
我发现我的好绕,虽然做出来了,感觉逻辑跟不上了....
都不知道自己哪里绕进去了.....
作者: huangfan    时间: 2016-3-30 13:15







作者: hydra    时间: 2016-3-30 13:28
同问
作者: a292723685    时间: 2016-3-30 13:38
感觉要沉下去....
作者: liuyi0601    时间: 2016-3-30 13:42
好复杂的说!
作者: ruigao1993    时间: 2016-3-30 15:36
额,,看着都费劲
作者: IT小笨鸟    时间: 2016-3-30 15:47
建议你把变量都用英文标识,不要用简单的符号去标识,要不然到后面你忘记了符号代表的变量而要去前面找,在代码很多的情况下就悲剧了,在开发中也很注重这一点的,要养成习惯
作者: Vincent丶fly    时间: 2016-3-30 21:11



作者: 马儿不吃草    时间: 2016-3-30 22:11
思路很简单,就是把出生年月日和现在的时间先转成日期对象,然后通过getTime()得到时间毫秒值,之后通过运算就得到天数了
作者: dwt1397261    时间: 2016-3-30 22:28
为何我感觉你是41期的学员
作者: 妄想年少轻狂    时间: 2016-3-30 22:42
String d = String.valueOf(c.getTime());                                    毫秒值(long型)转换成字符串
String f = String.valueOf(System.currentTimeMillis());

BigDecimal g = new BigDecimal(d);                                       字符串转成BigDecimal对象
BigDecimal h = new BigDecimal(f);

long w = Long.parseLong(h.subtract(g).toString());                  用BigDecimal对象进行运算,再转成字符串,在转成long型
这是绕了一大圈啊,直接操作毫秒值就可以了
作者: liu631980435    时间: 2016-3-30 22:52
慢慢就好了,
作者: a292723685    时间: 2016-3-31 22:08
妄想年少轻狂 发表于 2016-3-30 22:42
String d = String.valueOf(c.getTime());                                    毫秒值(long型)转换成字 ...

对极对极,终于找到知己了....
我纠结了很久才明白
作者: skykiah    时间: 2016-3-31 22:08
貌似很难呀
作者: a292723685    时间: 2016-3-31 22:11
skykiah 发表于 2016-3-31 22:08
貌似很难呀

很简单的,是我自己绕来绕去复杂了,你看上面的导师代码就好了...
作者: Vincent丶fly    时间: 2016-4-1 21:13
亚索你可以的!
作者: skykiah    时间: 2016-4-12 01:29
好像很难的样子




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