我有两个日期对象。当我在日期对象上使用after
方法时。它没有给出正确的结果。这是我的代码
DateandTime1=Thu Dec 26 08:05:42 IST 2013
DateandTime2=Thu Dec 26 07:15:40 IST 2013
DateandTime1
和DateandTime2
是两个Date
个对象。如果我编写boolean result=DateandTime1.after(DateandTime2)
之类的代码,那么result
值应为'false'。但它给了我'真实'。我可以知道是什么原因,如果有任何办法可以得到确切的区别,请告诉我。
答案 0 :(得分:2)
正如评论所说,您的第一个Date
是在您的第二个Date
之后,这就是致电DateandTime1.after(DateandTime2)
返回true
的原因。
至于你的第二个问题,你可以通过
获得两个日期之间的确切差异long difference = date1.getTime() - date2.getTime();
这将返回以毫秒为单位的差异。如果要将其转换为其他时间测量,可以使用TimeUnit
枚举。例如:
long differenceInHours = TimeUnit.MILLISECONDS.toHours(difference);
答案 1 :(得分:1)
<强> Class : java.util.Date 强>
public boolean after(Date when)
测试此日期是否在指定日期之后。
的返回:强>
true
当且仅当此Date对象表示的时刻严格晚于when表示的时刻;否则false
。
7之后的8为是。
答案 2 :(得分:1)
为了好玩,我在Joda-Time 2.3中尝试了这个。果然,8点来自7点。
至于“确切的差异”,你想以什么形式出现?秒?毫秒?小时,分钟和秒?在下面的代码示例中,我使用Joda-Time中的Period类以“PnYnMnDTnHnMnS”的格式呈现标准ISO 8601 "duration"。
// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so.
// import org.joda.time.*;
// import org.joda.time.format.*;
// DateandTime1=Thu Dec 26 08:05:42 IST 2013
// DateandTime2=Thu Dec 26 07:15:40 IST 2013
// Specify a time zone rather than depend on default.
// By "IST" did you mean India Standard Time or Irish Standard Time?
DateTimeZone timeZone = DateTimeZone.forID( "Asia/Kolkata" );
DateTime dateTime1 = new DateTime( 2013, 12, 26, 8, 5, 42, timeZone );
DateTime dateTime2 = new DateTime( 2013, 12, 26, 7, 15, 40, timeZone );
Period period = new Period( dateTime2, dateTime1 );
Boolean is8After7 = ( dateTime1.isAfter( dateTime2 ) );
转储到控制台...
System.out.println( "dateTime1: " + dateTime1 );
System.out.println( "dateTime2: " + dateTime2 );
System.out.println( "is8After7: " + is8After7 );
System.out.println( "period: " + period );
跑步时......
dateTime1: 2013-12-26T08:05:42.000+05:30
dateTime2: 2013-12-26T07:15:40.000+05:30
is8After7: true
period: PT50M2S