2

次の2つの方法があります。

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()残り何日 (時間) かを表示したい。

上記のコードでは、残り 10 日ではなく 4 日と表示されます。

誰でも助けることができますか?

4

2 に答える 2

3

あなたはset()方法を間違えています。

そのはず

c.set(Calendar.DAY_OF_MONTH, c.get(Calendar.DAY_OF_MONTH) + 10);

ただし、あなたのアプローチは最善とは言えません。別の回答で提案されているもの (現在の時刻に 10 * 24 * 60 * 60 * 1000 ミリ秒を追加する) は、IMHO の方がはるかに優れています。

于 2012-06-11T18:29:06.970 に答える
1

「今から 10 日後」を取得する最良の方法は、タイムスタンプ/ミリ秒を使用することです。

次のように、カレンダーから現在の時刻をミリ秒単位で取得できます。

Calendar someCalendar = new Calendar();
long someTimestamp = someCalendar.getTimeInMillis();

それを取得したら、それに 10 日 (ミリ秒単位) を追加できます。

long tenDays = 1000 * 60 * 60 * 24 * 10;
long tenDaysFromNow = someTimestamp + tenDays;
于 2012-06-11T18:28:58.110 に答える