Возможно ли преобразовать код?

  • Автор темы Автор темы Slavkaa
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Slavkaa

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Slavok2001
Здравствуйте. Вчера на досуге решил написать преобразователь в секунды, минуты и т.д.
Я хотел спросить, есть какое-нибудь оптимальное решение, нежели мое?
Java:
    public void setCustomTime(Long time, String second, String minute, String hour, String day, String month, String year) {
        StringBuilder str = new StringBuilder();
        if(time >= 60) {
            if(time >= 3600) {
                if(time >= 86400) {
                    if(time >= 2592000) {
                        if(time >= 31104000) {
                            long years = time/31104000;
                            long months = (time - (years*31104000))/2592000;
                            long days = (time - (years*31104000) - (months*2592000))/86400;
                            long hours = (time - (years*31104000) - (months*2592000) - (days*86400))/3600;
                            long minutes = (time - (years*31104000) - (months*2592000) - (days*86400) - (hours*3600))/60;
                            long seconds = time - (years*31104000) - (months*2592000) - (days*86400) - (hours*3600) - (minutes*60);
                            str.append(years + " " + year + " ");
                            if(years != 0) {
                                str.append(months + " " + month + " ");
                            }
                            if(days != 0) {
                                str.append(days + " " + day + " ");
                            }
                            if(hours != 0) {
                                str.append(hours + " " + hour + " ");
                            }
                            if(minutes != 0) {
                                str.append(minutes + " " + minute + " ");
                            }
                            if(seconds != 0) {
                                str.append(seconds + " " + second + " ");
                            }
                            this.output = str.toString().trim();
                            return;
                        }
                        long months = time/2592000;
                        long days = (time - (months*2592000))/86400;
                        long hours = (time - (months*2592000) - (days*86400))/3600;
                        long minutes = (time - (months*2592000) - (days*86400) - (hours*3600))/60;
                        long seconds = time - (months*2592000) - (days*86400) - (hours*3600) - (minutes*60);
                        str.append(months + " " + months + " ");
                        if(days != 0) {
                            str.append(days + " " + day + " ");
                        }
                        if(hours != 0) {
                            str.append(hours + " " + hour + " ");
                        }
                        if(minutes != 0) {
                            str.append(minutes + " " + minute + " ");
                        }
                        if(seconds != 0) {
                            str.append(seconds + " " + second + " ");
                        }
                        this.output = str.toString().trim();
                        return;
                    }
                    long days = time/86400;
                    long hours = (time - (days*86400))/3600;
                    long minutes = (time - (days*86400) - (hours*3600))/60;
                    long seconds = time - (days*86400) - (hours*3600) - (minutes*60);
                    str.append(days + " " + day + " ");
                    if(hours != 0) {
                        str.append(hours + " " + hour + " ");
                    }
                    if(minutes != 0) {
                        str.append(minutes + " " + minute + " ");
                    }
                    if(seconds != 0) {
                        str.append(seconds + " " + second + " ");
                    }
                    this.output = str.toString().trim();
                    return;
                }
                long hours = time/3600;
                long minutes = (time - (hours*3600))/60;
                long seconds = time - (hours*3600) - (minutes*60);
                str.append(hours + " " + hour + " ");
                if(minutes != 0) {
                    str.append(minutes + " " + minute + " ");
                }
                if(seconds != 0) {
                    str.append(seconds + " " + second + " ");
                }
                this.output = str.toString().trim();
                return;
            }
            long minutes = time/60;
            long seconds = time%60;
            str.append(minutes + " " + minute);
            if(seconds != 0) {
                str.append(seconds + " " + second + " ");
            }
            this.output = str.toString().trim();
            return;
        }
    }
P.S. Если использовать public String setCustomTime, то те return'ы, что в условиях, нифига не возвращает, только первое условие работает.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх