想问下为什么小弟我的时间差结果为什么不对

想问下为什么我的时间差结果为什么不对?Java codeimport java.text.SimpleDateFormatimport java.util.Da

想问下为什么我的时间差结果为什么不对?

Java code
import java.text.SimpleDateFormat;import java.util.Date;public class FormatNumAndDate {    /**     * @param args     */    public static void main(String[] args) {                    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");        String str1 = "2008-11-11";        Date begin;            try        {            begin = df.parse("2012-2-11");            Date now = new Date();                        long distance = now.getTime() - begin.getTime();            long nd = 1000 * 24 * 60 * 60 * 365;// 一年的毫秒数                                    System.out.println(distance / nd);        }        catch (Exception e)        {        }        }}


[解决办法]
不要用 new Date
[解决办法]
首先
now.getTime() - begin.getTime();2个long类型的数做运算先转化成int,所以这里2个数都被截了4个字节所以算出来的数会小很多,所以后面除了就是5了,
在就是我刚才也试了下 long nl = now.getTime();编译可以,但是System.out.println(n1);就出错了,我也不清楚。
[解决办法]
我是这样理解的,因为new Date()是一个随时变化的,当你给他赋值给n1的时候是可以的,但是当你要打印它的时候,他本身已经过了一段毫秒了,也就是说当你打印n1的时候此时的n1已经不是你上面的n1的值了,毕竟你程序执行也是要时间的,看我说的对不对,我感觉应该是这样的
[解决办法]
Java code
long nd = 1000 * 24 * 60 * 60 * 365;// 一年的毫秒数
[解决办法]
显示的时候同理,也改成下面:
Java code
System.out.println((long)distance / nd);
[解决办法]
探讨

显示的时候同理,也改成下面:
Java code

System.out.println((long)distance / nd);

[解决办法]
ueryueryuery童鞋说的很清楚了,没什么好补充啦~~~~

now.getTime() - begin.getTime();2个long类型的数做运算先转化成int。。
??
哪个老师教你的?该打~~~~
[解决办法]
long型是要加L的
long nd = 1000 * 24 * 60 * 60 * 365L;// 一年的毫秒数