java时间转换是出现的一个很诡异的问题

慕容若梦 发布于 2013/08/01 13:30
阅读 224
收藏 0
加载中
0
文文木
文文木
String str1 = df.format(new Date((df.parse("2013-6-30").getTime()+25*24*3600*1000L)));

    String str2 = df.format(new Date((df.parse("2013-6-30").getTime()+24*24*3600*1000L)));
不是诡异,而是你没搞清楚long类型和int类型相加会变成int类型,你的结果貌似超过了int类型范围,所以会有问题滴,上面的代码就不会诡异了。。。
0
丨丨丨

引用来自“jetliu1987”的答案

String str1 = df.format(new Date((df.parse("2013-6-30").getTime()+25*24*3600*1000L)));

    String str2 = df.format(new Date((df.parse("2013-6-30").getTime()+24*24*3600*1000L)));
不是诡异,而是你没搞清楚long类型和int类型相加会变成int类型,你的结果貌似超过了int类型范围,所以会有问题滴,上面的代码就不会诡异了。。。
... 说对了半句,原因是 25*24*3600*1000 超出了int的最大值,结果是-2134967296,换算为天的话就是-24天。 更正前半句, long和int相加是int会变成long类型,但这个题和这个加法没关系,在加法之前其实int就已经溢出了。
文文木
文文木
确实如此,谢谢订正。。。
0
慕容若梦
慕容若梦
的确,当时*24的时候没问题就没想到这层,多谢各位了
返回顶部
顶部