Java Date对象在将来显示时间 [英] Java Date object shows time in the future

查看:130
本文介绍了Java Date对象在将来显示时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在当前时间之前,我正在制作一个新的日期对象。如果我有今天前一天的表现,工作正常。但是如果我想在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆