Конвертируйте количество секунд в форматированную строку, используя midp / blackberry - PullRequest
2 голосов
/ 06 июля 2011

Я пытаюсь преобразовать количество секунд в форматированную строку, используя midp

Ниже приведен код, который я использую, проблема в том, что когда я запускаю это на устройстве (BlackBerry), 2 часадобавляются.Итак - formatSecondsAsDuration (1000) возвращает «00:02:01». То, что я ожидаю, это «00:00:01»

. Я думаю, что это происходит, поскольку SimpleDateFormat использует мою локаль?Я не могу использовать метод setTimeZone для установки часового пояса в формате UTC, который, я думаю, мог бы решить эту проблему.

public static String formatSecondsAsDuration(long second) {

    Date date = new Date(second);

     return new SimpleDateFormat("HH:mm:ss").format(date);

}

Я уже задавал похожий вопрос - Преобразовать int val в формат "ЧЧ:ММ: СС "с использованием JDK1.4 Но с тех пор нашли не совсем подходящим

1 Ответ

5 голосов
/ 06 июля 2011

Как насчет чего-то действительно простого:

public static String formatSecondsAsDuration(long seconds) {
    long hour = seconds / 60 / 60;
    long min = (seconds / 60) - (hour * 60);
    long sec = seconds - (min * 60) - (hour * 60 * 60);

    return (hour < 10 ? "0" : "") + hour + ":" + 
           (min < 10 ? "0" : "") + min + ":" +
           (sec < 10 ? "0" : "") + sec;
}

Просто убедитесь, что вы действительно пропускаете секунды (как указано в имени параметра), или измените приведенный выше код для обработки миллисекунд, если это то, что вам действительно нужно.

EDIT : Я только что наткнулся на этот метод сегодня, который выглядит так, как будто он делает именно то, что вам нужно, и уже встроен в BB API: DateTimeUtilities.formatElapsedTime ()

...