11
votes

Convertir des minutes entière en chaîne "HH: mm"

J'ai besoin de convertir minutes code> (défini comme entier) dans le format de chaîne suivant "HH: mm" en supposant que le démarrage code> est "00:00". Le code ci-dessous est ce que j'ai jusqu'à présent, mais cela ne fonctionne pas correctement. En outre, il ne prend pas en compte que le newtime code> doit être décalé conformément au Starttime code>. Y a-t-il une autre solution?

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);


3 commentaires

Utilisez Jodatime. Cela rend le travail de date / heure fonctionne réellement!


Pourriez-vous fournir un exemple?


devrait probablement ajouter la balise devoirs


8 Réponses :


2
votes

J'ai écrit ceci récemment pour convertir des secondes en heures, minutes et secondes; Adaptez-le comme vous s'il vous plaît (remplacez "S", "M", "H" avec des points, omettres secondes, etc.).

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 commentaires

33
votes

Vous allez ici: xxx

kotlin version xxx


3 commentaires

Vous pouvez même la raccourcir à: string.format ("% 02d:% 02d", heures, restminutes);


Pour convertir la chaîne en minutes Stackoverflow.com/Questtions/8909075/...


Cela ne fonctionnera pas si min est au-dessus de 125. TimeUnit.minutes.Tehours (120) devrait ajouter de la valeur min.



9
votes
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;

5 commentaires

int h = minutes / 60 + inteur.valueof (starttime.substring (0,1));


Comment puis-je obtenir la sortie "02:00"? Maintenant c'est "2: 0".


Vous pouvez utiliser string.format, par ex. String.format ("% 02d", heures).


J'ai trouvé une erreur dans ce code. Si StarTime = "10:00", le code le convertit sur "1" au lieu de "10". Révisions?


Ce code est complètement incorrect - il ne gère pas débordement du champ minutes dans le champ Heures.



0
votes
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;

0 commentaires

0
votes
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); 
RESULT: 
24:04

0 commentaires

-2
votes
int minutes = 129;
double hoursAndMinutes = (minutes / 60)
        + (double) minutes % 60 / 100;
String hoursAndMinutesStr = new DecimalFormat("0.00").format(hoursAndMinutes).replace('.', ':');
System.out.println(hoursAndMinutesStr);

2 commentaires

Bien que techniquement, le résultat est correct (car 60 <100), c'est le mauvais moyen d'aborder ce type de tâches. La division est logique (une heure a 60 minutes), pas mathématique. Les minutes ne sont pas des "fractions d'heure".


De plus, veuillez ne pas ajouter de réponses aux questions avec de nombreuses réponses correctes qui ont déjà été acceptées.



1
votes

La réponse

apines est bonne mais si vous souhaitez supprimer l'avertissement dans Android, ajoutez «Locale»:

int hours = 3;
int minutes = 6;
private static final String TIME_SEPARATOR = ":";
String.format(Locale.getDefault(), "%02d"+TIME_SEPARATOR+"%02d", hours, minutes);


0 commentaires

4
votes
int minutes = 120;

int h = minutes / 60;
int m = minutes % 60;

String.format("%02d:%02d",h,m); // output : "02:00"
String.format("%d:%d",h,m); // output : "2:0"


0 commentaires