Конвертировать целые минуты в строку "чч: мм" - PullRequest
11 голосов
/ 18 января 2012

Мне нужно преобразовать minutes (определяется как целое число) в следующий строковый формат "чч: мм", предполагая, что startTime равно "00:00". Ниже приведенный код - это то, что у меня есть, но он не работает должным образом. Также не учитывается, что newTime должно быть смещено в соответствии с startTime. Есть ли другое решение?

String startTime = "00:00";
int minutes = 120;
double time = minutes/60;
String timeS = Double.toString(time);
String[] hourMin = timeS.split(".");
String h = hourMin[0];
String m = hourMin[1];
String newTime = "";    
newTime.concat(h+":"+m);

Ответы [ 7 ]

26 голосов
/ 19 января 2012

Вот, пожалуйста:

/*Output: 02:05 */
public String fromMinutesToHHmm(int minutes) {
    long hours = TimeUnit.MINUTES.toHours(Long.valueOf(minutes));
    long remainMinutes = min - TimeUnit.HOURS.toMinutes(hours);
    return String.format("%02d:%02d", hours, remainMinutes);
}

Kotlin версия

class DateUtils {

    companion object {

        fun fromMinutesToHHmm(minutes: Int): String {
            val hours = TimeUnit.MINUTES.toHours(minutes.toLong())
            val remainMinutes = minutes - TimeUnit.HOURS.toMinutes(hours)
            return String.format("%02d:%02d", hours, remainMinutes)
        }

    }

}
8 голосов
/ 19 января 2012
String startTime = "00:00";
int minutes = 120;
int h = minutes / 60 + Integer.parseInt(startTime.substring(0,1));
int m = minutes % 60 + Integer.parseInt(startTime.substring(3,4));
String newtime = h+":"+m;
2 голосов
/ 18 января 2012

Я написал это недавно для преобразования секунд в часы, минуты и секунды; измените его по своему усмотрению (замените "s", "m", "h" на двоеточия, пропустите секунды и т. д.).

private static String getFormattedTime(int secs) {
    // int secs = (int) Math.round((double) milliseconds / 1000); // for millisecs arg instead of secs
    if (secs < 60)
        return secs + "s";
    else {
        int mins = (int) secs / 60;
        int remainderSecs = secs - (mins * 60);
        if (mins < 60) {
            return (mins < 10 ? "0" : "") + mins + "m "
                    + (remainderSecs < 10 ? "0" : "") + remainderSecs + "s";
        }
        else {
            int hours = (int) mins / 60;
            int remainderMins = mins - (hours * 60);
            return (hours < 10 ? "0" : "") + hours + "h "
                    + (remainderMins < 10 ? "0" : "") + remainderMins + "m "
                    + (remainderSecs < 10 ? "0" : "") + remainderSecs + "s";
        }
    }
}
0 голосов
/ 05 июля 2017

apines 'ответ хороший, но если вы хотите удалить предупреждение в Android, добавьте' Locale ':

int hours = 3;
int minutes = 6;
private static final String TIME_SEPARATOR = ":";
String.format(Locale.getDefault(), "%02d"+TIME_SEPARATOR+"%02d", hours, minutes);
0 голосов
/ 16 августа 2016
int minutes = 129;
double hoursAndMinutes = (minutes / 60)
        + (double) minutes % 60 / 100;
String hoursAndMinutesStr = new DecimalFormat("0.00").format(hoursAndMinutes).replace('.', ':');
System.out.println(hoursAndMinutesStr);
0 голосов
/ 05 декабря 2013
int ALLTIME_IN_MINUTES = 1444
int hour = ALLTIME_IN_MINUTES /60;
            int min = ALLTIME_IN_MINUTES %60;


            String dateStr = hour+":"+min;
            SimpleDateFormat curFormater = new SimpleDateFormat("H:m"); 
            Date dateObj = curFormater.parse(dateStr); 
            SimpleDateFormat postFormater = new SimpleDateFormat("HH:mm"); 

            String newDateStr = postFormater.format(dateObj); 

РЕЗУЛЬТАТ: 24: 04

0 голосов
/ 19 января 2012
String startTime = "00:00";
int minutes = 120;

//--- counting
int hour = minutes/60;
minutes=minutes-hours*60;
String m = Integer.toString(minutes);
String h = Integer.toString(hours);
newTime=h+":"+m;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...