在没有Joda时间的情况下计算剩余日期

时间:2013-12-01 09:53:58

标签: android date time calendar

我花了一个小时通过stackoverflow试图找到一种正确的方法来计算剩余的天数,小时数,分钟数和秒数而不使用JODA-Time。我希望尽可能保持简单。

我正在寻求执行以下操作(请提供实例声明,我不确定是否为我们的Longs,Time或Calendar对象等):

difference =  endingDate-currentTime

然后使用DD:HH:MM:SS格式

将textView设置为剩余时间

换句话说,最好的方法是什么? (时区并不重要)如何设置结束日期,例如2013年12月31日,结束日期是什么类型?它是时间,日期还是日历对象?我想从结束日期中减去当前日期,以显示截至2013年12月31日的剩余天数。格式为DD:HH:MM:SS

谢谢!非常感谢帮助。

1 个答案:

答案 0 :(得分:3)

我会告诉你如何划分difference变量以获得天,小时等等。但这就是我要完成其余部分的方法。

Calendar endCalendar = new Calendar();

// Set end to 31th Dec 2013 10:15:30 am local time
endCalendar.set(2013, 11, 31, 10, 15, 30);

long localEndTimeInMillis = endCalendar.getTimeInMillis();
long localCurrentTimeInMillis = Calendar.getInstance().getTimeInMillis();

// Convert to UTC.
// Easy way to compensate if the current and end times are in different DST times
utcEndTimeInMillis = getUTCTimeInMillis(localEndTimeInMillis);
utcCurrentTimeInMillis = getUTCTimeInMillis(localCurrentTimeInMillis);

long difference = utcEndTimeInMillis - utcCurrentTimeInMillis;

转换为UTC的方法......

public long getUTCTimeInMillis(long localTimeInMillis) {
    return localTimeInMillis - TimeZone.getDefault().getRawOffset() - (TimeZone.getDefault().inDaylightTime(new Date(localTimeInMillis)) ? TimeZone.getDefault().getDSTSavings() : 0);
}