【发布时间】:2015-10-25 01:31:31
【问题描述】:
我有两个日期(其中一个是现在),需要找出两者之间的差异。我的代码给了我不好的输出(有时甚至是负面的)。
我尝试过使用 Months、Days、Seconds、Hours 和 Years 类,并在方法之间进行调整,但没有成功。
编辑: 回到我的原始代码,但没有持续时间。 @Basil Bourque 发布了一个很棒的解决方案,但我只是没有足够的经验来处理 Periods/Duration 以及从它们动态格式化的所有内容。
解决方案
public static String formattedTime(DateTime d){
DateTime present = new DateTime(Calendar.getInstance());
//dont really want to deal with WHY its 7hrs ahead. o well
DateTime date = d.minusHours(7);
int diff = Seconds.secondsBetween(date,present).getSeconds();
String postfix = "s";
Log.i("time", "" + diff);
if(diff>59){
diff = Minutes.minutesBetween(date, present).getMinutes();
postfix = "s";
if(diff>59){
diff = Hours.hoursBetween(date, present).getHours();
postfix = "hr";
if(diff>1)
postfix+="s";
if(diff>23){
diff = Days.daysBetween(date, present).getDays();
postfix = "d";
if(diff>6){
diff = Weeks.weeksBetween(date, present).getWeeks();
postfix = "wk";
if(diff>1)
postfix+="s";
if(diff>3){
diff = Months.monthsBetween(date, present).getMonths();
postfix = "m";
if(diff>11){
diff = Years.yearsBetween(date, present).getYears();
postfix = "yr";
if(diff>1)
postfix+="s";
}
}
}
}
}
}
return diff+postfix;
}
【问题讨论】:
-
我刚刚意识到服务器位于不同的时区。当我考虑到这一点时会很快更新
标签: java date jodatime difference