我有以下两种方法:
private long getTimeInMilliseconds()
{
Calendar c = Calendar.getInstance();
if(c.get(Calendar.DAY_OF_MONTH) == 21)
{
c.set(Calendar.MONTH, Calendar.MONTH + 1 );
c.set(Calendar.DAY_OF_MONTH, 1);
}
else
c.set(Calendar.DAY_OF_MONTH, Calendar.DAY_OF_MONTH + 10);
if(c.get(Calendar.MONTH) > 11)
c.set(Calendar.MONTH, 0);
return c.getTimeInMillis();
}
public static void remainingTime(L2PcInstance player)
{
long now = System.currentTimeMillis();
long then = player.getExpBoostTime();
long time = then - now;
int hours = (int) (time / 3600000);
player.sendMessage(hours+ " hours remaining until your EXP BOOST PERIOD ends");
}
我希望getTimeInMillisSeconds()
在10天后返回时间。我希望remainingTime()
显示剩余的天数(以小时为单位)。
使用上面的代码,它显示剩余4天而不是10天。
有人可以帮忙吗?
答案 0 :(得分:3)
您在set()
方法中犯了错误。
应该是
c.set(Calendar.DAY_OF_MONTH, c.get(Calendar.DAY_OF_MONTH) + 10);
然而,你的方法远非最好。在另一个答案中提出的建议(在当前时间增加10 * 24 * 60 * 60 * 1000毫秒)是更好的恕我直言。
答案 1 :(得分:1)
“从现在起十天”的最佳方法是使用时间戳/毫秒。
您可以从以下日历中获取当前时间(以毫秒为单位):
Calendar someCalendar = new Calendar();
long someTimestamp = someCalendar.getTimeInMillis();
一旦你得到它,你可以添加十天(再次以毫秒为单位):
long tenDays = 1000 * 60 * 60 * 24 * 10;
long tenDaysFromNow = someTimestamp + tenDays;