【发布时间】:2020-03-28 08:06:27
【问题描述】:
我正在开发一个应用程序,其中一个时间保存在 firebase 上,另一个是当前用户时间。当应用程序启动时,它会检索带有日期的 Firebase 时间并获取当前用户日期并找到它的分钟数。但问题是它在日期相同时计算准确,平均第一个日期时间是 28/03/2020 10:00,第二个日期是 28/03/2020 11:00。但是,当日期时间像第一个 27/03/2020 10:00 和第二个是 28/03/2020 01:00 时,它不会根据日期计算,它还会再次根据同一天计算并显示 3 小时。如果日期变化太大,则结果显示为负号。 我搜索太多,但在堆栈溢出上也找不到最佳解决方案。对于这个问题,大多数接受的答案都像我一样使用相同的代码,但对我没有任何作用。
我的代码是:
SimpleDateFormat format = new SimpleDateFormat("DD/MM/YYYY HH:mm");
String currentTime = format.format(Calendar.getInstance().getTime());
try {
d1 = format.parse(currentTime);
d2 = format.parse(submitTime);
} catch (ParseException e) {
e.printStackTrace();
}
long duration = d1.getTime() - d2.getTime();
Toast.makeText(this, ""+duration, Toast.LENGTH_LONG).show();
int minutes= (int) TimeUnit.MILLISECONDS.toMinutes(duration);
if (minutes>=60)
{
int hrs = (int) TimeUnit.MINUTES.toHours(minutes);
mOut.setText(""+hrs+"h "+minutes+"min");
}
else if (minutes>1440)
{
int days = (int) TimeUnit.MINUTES.toDays(minutes);
mOut.setText(""+days+"days");
}
else
{
mOut.setText(""+minutes);
}
getFinal = Integer.parseInt(timeS)-minutes;
【问题讨论】:
-
顺便考虑扔掉长期过时且臭名昭著的麻烦
SimpleDateFormat和朋友,并将ThreeTenABP添加到您的Android项目中,以便使用java.time,现代Java日期和时间API .使用起来感觉好多了。
标签: java android date datetime