1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Как перевести дни/годы/недели в миллисекунды LONG

Тема в разделе "Разработка плагинов для новичков", создана пользователем ItsWay, 5 янв 2024.

  1. Автор темы
    ItsWay

    ItsWay Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    ItsWay
    Здравствуйте, хочу сделать свою систему банов, к примеру если игроку прописали бан, записывается в hashmap коллекция: UUID, LONG
    в long записать
    System.currentTimeMillis() + время бан в long(миллисекундах)
    При каждом заходе проверять прошло ли время или нет, если нет, вычислять сколько миллисекунд осталось до конца бана и переводить время, а потом сообщать игроку.
    Нооо, я немного не могу домыслить, как перевести дни, недели, месяцы, года в количество, что бы добавить к system.currentimemillis, ну логично что хочу выдавать бан на дни/недели/года.
     
  2. mirrerror

    mirrerror Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    mirrerror
    Я бы лучше банил до определенной даты, используя LocalDateTime, так не придется вообще париться, когда истечет бан (можно проверять только при входе игрока дату), да и не нужно будет ничего переводить, есть готовое API в Java для этого
     
  3. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
  4. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Тебе сюда https://docs.oracle.com/javase/8/docs/api/java/time/Duration.html
    Это поможет тебе и разницу вычислить и отформатировать в дни часы секунды.
     
  5. Автор темы
    ItsWay

    ItsWay Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    ItsWay
    Что то сам сделал такое

    Код:
        private Long getLongBT(Integer g, String type){
            if(type.equals("hour")){
                long hour = g * 36000000;
                return hour;
            } else if(type.equals("day")){
                long day = g * 86400000;
                return day;
            } else if(type.equals("mounth")){
                long mounth = g * 86400000;
                mounth = mounth * 31;
                return mounth;
            }
            return 0L;
        }
    Но видимо и в правду лучше делать через LocalDataTime, а вот мелкие отрезки времени, такие как кд делать через миллисекунды и в хешмап.
     

Поделиться этой страницей