Java TimeUnit - настройка единицы времени недели

Я пытаюсь поработать над некоторыми методами и ответом на возможность использования действия /"команды" один раз в неделю (предотвращение спама). Моя единственная проблема состоит в том, как установить мое время Java, чтобы установить как неделю. Вот что у меня есть:

public static long displayTime;

Методы:

    public static boolean setDisplayName(Player player, String displayName) {
    synchronized (cachedNames) {
        if((SerializableFilesManager.containsPlayer(Utils.formatPlayerNameForProtocol(displayName)) || cachedNames.contains(displayName) || !cachedNames.add(displayName)))
            return false;
        if(player.hasDisplayName())
            cachedNames.remove(player.getDisplayName());
    }
    displayTime = System.currentTimeMillis() + (1000*60*60);
    String displayname = player.getDisplayName();
    player.setDisplayName(displayName);
    FriendChatsManager.refreshChat(player);
    Highscores.highscores(player, displayname);
    player.getAppearence().generateAppearenceData();
    return true;
}

public static String convertToTime() {
    String time = "You have to wait "+(getTime() == 0 ? "few more seconds" :      getTime()+" minutes")+" to change your display name again!";
    return time;
}

public static int getTime() {
    return (int) (displayTime-System.currentTimeMillis()/60000);
}    

То, что я пытаюсь изменить на "недельное" время, это displayTime = System.currentTimeMillis() + (1000*60*60);, Я считаю (1000 * 60 * 60) это 24 часа, правильно? Это моя единственная проблема. Когда это решено, пользователь должен использовать команду только один раз в неделю. Команда прямо здесь:

case "setdisplay":
            if (DisplayNames.displayTime > System.currentTimeMillis()) {
                player.getPackets().sendGameMessage(DisplayNames.convertToTime());
                return true;
            }
            if (!player.isDonator() && !player.isExtremeDonator()) {
                player.getPackets().sendGameMessage(
                        "You do not have the privileges to use this.");
                return true;
            }

DisplayNames - это класс, в котором используются методы и все. Спасибо за всю помощь, и я уверен, что это просто глупый вопрос: P.

~ Дерек

1 ответ

Ты можешь использовать Calendar класс, у него есть метод для изменения даты, такой как добавление дня. И это может быть преобразовано в дату. Это решает большинство моих проблем, касающихся времени. Надеюсь, это работает и для вас.

Я использовал Calendar.DAY_OF_WEEK несколько дней в неделю

Другие вопросы по тегам