我试着计算时间间隔。我将字符串日期解析为Date对象以获得某种模式。
public static float countTimeAgo(String timestamp){
// date pattern
SimpleDateFormat simpleDateFormat
= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS");
simpleDateFormat.setLenient(false);
// time interval
float diff;
try {
// convert timestamp to given pattern
Date timestampDate = simpleDateFormat.parse(timestamp);
// get actual date and convert to pattern
Date date = new Date();
simpleDateFormat.format(date);
// count difference in millis
diff = date.getTime() - timestampDate.getTime();
// convert millis to minutes
diff = diff/(1000*60);
} catch (ParseException e) {
return -1;
}
if (diff < 0)
return -1;
else
return diff;
}
当我把字符串&#34; 2018-03-08 23:28:07.807353&#34;作为运行我的应用程序时的参数,方法返回非-1值。但是当我进行测试时,它失败了:
@Test
public void testCountTimeAgo(){
String date = "2018-03-08 23:28:07.807353";
assertTrue(PostTimeProvider.countTimeAgo(date) != -1);
}
的AssertionError:
java.lang.AssertionError
at org.junit.Assert.fail(Assert.java:86)
at org.junit.Assert.assertTrue(Assert.java:41)
at org.junit.Assert.assertTrue(Assert.java:52)
有人知道为什么吗?
答案 0 :(得分:0)
在您的代码中,当解析失败或日期是将来时,可以返回-1。在这种情况下,您应该检查哪一个正在发生。也许您的设备和运行单元测试的设备有不同的时间?