Java Date对象在将来显示时间 [英] Java Date object shows time in the future
问题描述
在当前时间之前,我正在制作一个新的日期对象。如果我有今天前一天的表现,工作正常。但是如果我想在30天前显示,它将会转到未来(?)
Date date = new Date();
long sometime = 24 * 60 * 60 * 1000; //一天
System.out.println(date.getTime());
Date sometimeago = new Date(date.getTime() - sometime);
System.out.println(sometimeago);
sometime = 30 * 24 * 60 * 60 * 1000; //一个月
sometimeago = new Date(date.getTime() - 有时);
System.out.println(sometimeago);
输出:
code> 1408160853776
Thu Aug 14 20:47:33 PDT 2014
Thu Sep 04 13:50:21 PDT 2014
这里有什么限制?达到极限?
int
p>
在您的情况下 int
文字获得评估之前,导致否定结果,而不是被分配到 long
sometime = 30 * 24 * 60 * 60 * 1000; //一个月
这将导致 -1702967296
将其转换为
sometime = 30 * 24 * 60 * 60 * 1000L; //一个月
注意: L
使它 long
文字,然后乘以
更好地使用日历
类日期
操纵
另见
I'm making a new date object some time before current time. If I have it to show 1 day before today, it works fine. but if I want to show 30 days ago, it goes to future (?)
Date date = new Date();
long sometime = 24 * 60 * 60 * 1000; //a day
System.out.println(date.getTime() );
Date sometimeago = new Date(date.getTime() - sometime);
System.out.println(sometimeago );
sometime = 30* 24 * 60 * 60 * 1000; //a month
sometimeago = new Date(date.getTime() - sometime);
System.out.println(sometimeago );
Output:
1408160853776
Thu Aug 14 20:47:33 PDT 2014
Thu Sep 04 13:50:21 PDT 2014
What's limiting here? Reaching Long limit?
integer overflow in int
literals,
in your case int
literals gets evaluted before and that results in negative result and than gets assigned to long
sometime = 30* 24 * 60 * 60 * 1000; //a month
this results in -1702967296
convert it to
sometime = 30* 24 * 60 * 60 * 1000L; //a month
note: L
to make it long
literal and then multiply
Better to use Calendar
class for Date
manipulation
Also See
这篇关于Java Date对象在将来显示时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!