Java 日历类:设置为从现在起十天
我有以下两种方法:Java 日历类:设置为从现在起十天,java,calendar,Java,Calendar,我有以下两种方法: 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_M
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天
有人能帮忙吗?获取“从现在起十天”的最佳方法是使用时间戳/毫秒
您可以从如下日历中获取当前时间(以毫秒为单位):
Calendar someCalendar = new Calendar();
long someTimestamp = someCalendar.getTimeInMillis();
一旦你得到了它,你可以再加上十天(同样以毫秒为单位):
获取“从现在起十天”的最佳方法是使用时间戳/毫秒
您可以从如下日历中获取当前时间(以毫秒为单位):
Calendar someCalendar = new Calendar();
long someTimestamp = someCalendar.getTimeInMillis();
一旦你得到了它,你可以再加上十天(同样以毫秒为单位):
您在
set()
方法中出错
应该是
c.set(Calendar.DAY_OF_MONTH, c.get(Calendar.DAY_OF_MONTH) + 10);
然而,你的方法远不是最好的。另一个答案中建议的方法(在当前时间的基础上增加10*24*60*60*1000毫秒)比IMHO好得多。您在
set()
方法中犯了一个错误
应该是
c.set(Calendar.DAY_OF_MONTH, c.get(Calendar.DAY_OF_MONTH) + 10);
然而,你的方法远不是最好的。另一个答案中的建议(在当前时间的基础上增加10*24*60*60*1000毫秒)比IMHO好得多。没有检查整个代码,但是您的行c.set(Calendar.MONTH,Calendar.MONTH+1);始终被以下内容覆盖。此外,您正在将月份设置为每月的常量alendar.DAY加1的值,而不是当前月份加1的值。后者对else部分有效(加10,而不是加1)。没有检查整个代码,但是您的行c.set(Calendar.MONTH,Calendar.MONTH+1);始终被以下内容覆盖。此外,您正在将月份设置为每月的常量alendar.DAY加1的值,而不是当前月份加1的值。后者对else部分有效(加10,而不是加1)。虽然确实可以使用乘法将天转换为毫秒,但我建议使用java.util.concurrent.TimeUnit和方法toMilis()、toSeconds()等——这样代码看起来更可读,而且您不必担心计算。这只是一个建议。虽然确实可以使用乘法将天转换为毫秒,但我建议使用java.util.concurrent.TimeUnit和方法toMilis()、toSeconds()等——这样代码看起来更可读,而且您不必担心计算。只是一个建议。谢谢兄弟!问题是:c.set(Calendar.DAY\u OF_MONTH,c.get(Calendar.DAY\u OF_MONTH)+10)@user1449638如果您保持这种方法,您将需要修复
c.set(Calendar.MONTH,Calendar.MONTH+1)
哪个应该是c.set(Calendar.MONTH,c.get(Calendar.MONTH)+1)代码>然后谢谢兄弟!问题是:c.set(Calendar.DAY\u OF_MONTH,c.get(Calendar.DAY\u OF_MONTH)+10)@user1449638如果您保持这种方法,您将需要修复c.set(Calendar.MONTH,Calendar.MONTH+1)
哪个应该是c.set(Calendar.MONTH,c.get(Calendar.MONTH)+1)代码>然后