Comment convertir minutes en heures et minutes (hh:mm) en java

je dois convertir les minutes en heures et minutes en java. Par exemple 260 devrait être 4:20. quelqu'un peut m'aider comment faire convertir.

47
demandé sur lakshmi 2011-03-22 08:51:37

17 réponses

si votre temps est dans une variable appelée t

int hours = t / 60; //since both are ints, you get an int
int minutes = t % 60;
System.out.printf("%d:%02d", hours, minutes);

Il ne pouvait pas être plus facile

143
répondu Federico klez Culloca 2011-03-26 12:53:25

vous pouvez également utiliser la classe TimeUnit . Vous pouvez définir

private static final String FORMAT = "%02d:%02d:%02d";
peut avoir une méthode comme:
public static String parseTime(long milliseconds) {
      return String.format(FORMAT,
              TimeUnit.MILLISECONDS.toHours(milliseconds),
              TimeUnit.MILLISECONDS.toMinutes(milliseconds) - TimeUnit.HOURS.toMinutes(
              TimeUnit.MILLISECONDS.toHours(milliseconds)),
              TimeUnit.MILLISECONDS.toSeconds(milliseconds) - TimeUnit.MINUTES.toSeconds(
              TimeUnit.MILLISECONDS.toMinutes(milliseconds)));
   }
11
répondu walters 2011-03-22 07:55:21

tl; dr

Duration.ofMinutes( 260L )
        .toString()

PT4H20M

... ou ...

LocalTime.MIN.plus( 
    Duration.ofMinutes( 260L ) 
).toString()

04: 20

Duration

La java.les classes de temps prévoir une paire de classes pour représenter des intervalles de temps. La classe Duration est pour heures-minutes-secondes, et Period est pour les ans-mois-jours.

Duration d = Duration.ofMinutes( 260L );

ISO 8601

la norme ISO 8601 définit les formats textuels pour les valeurs date-heure. Pour les périodes de temps non reliées à la ligne du temps, le format standard est PnYnMnDTnHnMnS . Le P marque le début, et le T sépare les années-mois-jours des heures-minutes-secondes. Donc une heure et demie c'est PT1H30M .

La java.les classes de temps utilisent les formats ISO 8601 par défaut pour l'analyse et la génération de chaînes. Les classes Duration et Period utilisent ce format standard particulier. Alors appelez simplement toString .

String output = d.toString(); 

PT4H20M

Pour une autre mise en forme, de construire votre propre Chaîne de caractères en Java 9 et les versions ultérieures ( pas dans Java 8) avec la méthode Duration::to…Part . Ou voir cette réponse pour l'utilisation de regex pour manipuler la chaîne formatée ISO 8601.

LocalTime

je suggère fortement d'utiliser le format standard ISO 8601 au lieu du format d'horloge extrêmement ambigu et déroutant de 04:20 . Mais si vous insistez, vous pouvez obtenir cet effet en hacking avec la classe LocalTime . Cela fonctionne si votre durée n'est pas plus de 24 heures.

LocalTime hackUseOfClockAsDuration = LocalTime.MIN.plus( d );
String output = hackUseOfClockAsDuration.toString();

04: 20


à Propos de java.temps

Le de java.time framework est construit dans Java 8 et plus tard. Ces classes remplacent les anciennes classes de date héritées telles que java.util.Date , Calendar , & SimpleDateFormat .

le projet Joda-Time , maintenant en mode maintenance , conseille la migration vers le java.temps classes.

pour en savoir plus, voir le Oracle Tutorial . Et rechercher le débordement de la pile pour de nombreux exemples et explications. La spécification est JSR 310 .

Où obtenir le Java.les classes de temps?

le projet ThreeTen-Extra étend java.temps avec des cours supplémentaires. Ce le projet est un terrain d'essai pour d'éventuelles futures additions à java.temps. Vous pouvez trouver ici quelques cours utiles tels que: Interval , YearWeek , YearQuarter , et plus .

11
répondu Basil Bourque 2017-07-19 18:37:39

utiliser java.text.SimpleDateFormat pour convertir minute en heures et minute

SimpleDateFormat sdf = new SimpleDateFormat("mm");

try {
    Date dt = sdf.parse("90");
    sdf = new SimpleDateFormat("HH:mm");
    System.out.println(sdf.format(dt));
} catch (ParseException e) {
    e.printStackTrace();
}
5
répondu Athar Iqbal 2017-07-21 09:26:10

Il peut être fait comme ça

        int totalMinutesInt = Integer.valueOf(totalMinutes.toString());

        int hours = totalMinutesInt / 60;
        int hoursToDisplay = hours;

        if (hours > 12) {
            hoursToDisplay = hoursToDisplay - 12;
        }

        int minutesToDisplay = totalMinutesInt - (hours * 60);

        String minToDisplay = null;
        if(minutesToDisplay == 0 ) minToDisplay = "00";     
        else if( minutesToDisplay < 10 ) minToDisplay = "0" + minutesToDisplay ;
        else minToDisplay = "" + minutesToDisplay ;

        String displayValue = hoursToDisplay + ":" + minToDisplay;

        if (hours < 12)
            displayValue = displayValue + " AM";
        else
            displayValue = displayValue + " PM";

        return displayValue;
    } catch (Exception e) {
        LOGGER.error("Error while converting currency.");
    }
    return totalMinutes.toString();
3
répondu Priyanka 2012-10-02 09:41:49

Minutes mod 60 donne des heures avec quelques minutes de la fin.

http://www.cafeaulait.org/course/week2/15.html

1
répondu Ryre 2011-03-22 05:54:28
long d1Ms=asa.getTime();   
long d2Ms=asa2.getTime();   
long minute = Math.abs((d1Ms-d2Ms)/60000);   
int Hours = (int)minute/60;     
int Minutes = (int)minute%60;     
stUr.setText(Hours+":"+Minutes); 
1
répondu developer 2011-07-24 09:57:37

essayez ce code:

import java.util.Scanner;

public class BasicElement {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        int hours;
        System.out.print("Enter the hours to convert:");
        hours =input.nextInt();
        int d=hours/24;
        int m=hours%24;
        System.out.println(d+"days"+" "+m+"hours");     

    }
}
1
répondu Jayaramachandran P 2012-02-19 12:53:52

donné entrée en secondes, vous pouvez transformer au format hh: mm: ss comme ceci:

int hours;
int minutes;
int seconds;
int formatHelper;

int input;


//formatHelper maximum value is 24 hours represented in seconds

formatHelper = input % (24*60*60);

//for example let's say format helper is 7500 seconds

hours = formatHelper/60*60;
minutes = formatHelper/60%60;
seconds = formatHelper%60;

//now operations above will give you result = 2hours : 5 minutes : 0 seconds;

j'ai utilisé formatHelper depuis l'entrée peut être plus de 86 400 secondes, qui est de 24 heures.

si vous voulez que le temps total de votre entrée soit représenté par hh:mm:ss, vous pouvez simplement éviter formatHelper.

j'espère que ça aidera.

1
répondu LightinDarknessJava 2016-06-14 23:09:21

j'utilise cette fonction pour mes projets:

 public static String minuteToTime(int minute) {
    int hour = minute / 60;
    minute %= 60;
    String p = "AM";
    if (hour >= 12) {
        hour %= 12;
        p = "PM";
    }
    if (hour == 0) {
        hour = 12;
    }
    return (hour < 10 ? "0" + hour : hour) + ":" + (minute < 10 ? "0" + minute : minute) + " " + p;
}
1
répondu Shohan Ahmed Sijan 2017-07-02 06:41:37

(en Kotlin) si vous allez mettre la réponse dans un TextView ou quelque chose, vous pouvez à la place utiliser une ressource string:

<string name="time">%02d:%02d</string>

et ensuite vous pouvez utiliser cette ressource de chaîne de caractères pour ensuite définir le texte à l'exécution en utilisant:

private fun setTime(time: Int) {
    val hour = time / 60
    val min = time % 60
    main_time.text = getString(R.string.time, hour, min)
}
1
répondu Anthony Cannon 2018-03-28 14:08:46

vous êtes oublié le sol dans votre réponse :

int hours = Math.floor(t / 60); 
int minutes = t % 60;

System.out.printf("%d:%02d", hours, minutes);

sans elle, votre résultat est faux dans certains cas, comme par exemple :

t = 525
hours = 8.75 

donc sans les maths.étage, nous avons ce résultat: 9h45 au lieu de 8h45.

0
répondu user2389203 2013-06-25 13:49:16

calculer les minutes en utilisant ce code:

long difference = new Date().getTime() - user.getUpdatedDate().getTime(); 
        int minutes = (int) TimeUnit.MILLISECONDS.toMinutes(difference);
0
répondu Pritam Panja 2017-03-16 11:13:11

Swift

func timeStringFrom(minutes:Double) -> String {
    return "\(Int(minutes/60)):\(Int(minutes) % 60)"
}
0
répondu iCyberPaul 2017-03-29 08:41:20
int mHours = t / 60; //since both are ints, you get an int
int mMinutes = t % 60;
System.out.printf("%d:%02d", "" +mHours, "" +mMinutes);
0
répondu Jigar Patel 2017-03-29 08:46:34
import java.util.Scanner;
public class Time{
    public static void main(String[]args){
        int totMins=0;
        int hours=0;
        int mins=0;
    Scanner sc= new Scanner(System.in);
    System.out.println("Enter the time in mins: ");
        totMins= sc.nextInt();
        hours=(int)(totMins/60);
        mins =(int)(totMins%60);
        System.out.printf("%d:%d",hours,mins);
    }
}
0
répondu Janeth Fernando 2018-02-17 09:23:49

voici ma fonction pour convertir un second , millisecond en day,hour,minute,second

public static String millisecondToFullTime(long second) {
    return timeUnitToFullTime(second, TimeUnit.MILLISECONDS);
}

public static String secondToFullTime(long second) {
    return timeUnitToFullTime(second, TimeUnit.SECONDS);
}

public static String timeUnitToFullTime(long time, TimeUnit timeUnit) {
    long day = timeUnit.toDays(time);
    long hour = timeUnit.toHours(time) % 24;
    long minute = timeUnit.toMinutes(time) % 60;
    long second = timeUnit.toSeconds(time) % 60;
    if (day > 0) {
        return String.format("%dday %02d:%02d:%02d", day, hour, minute, second);
    } else if (hour > 0) {
        return String.format("%d:%02d:%02d", hour, minute, second);
    } else if (minute > 0) {
        return String.format("%d:%02d", minute, second);
    } else {
        return String.format("%02d", second);
    }
}

Test

public static void main(String[] args) {
    System.out.println("60 => " + secondToFullTime(60));
    System.out.println("101 => " + secondToFullTime(101));
    System.out.println("601 => " + secondToFullTime(601));
    System.out.println("7601 => " + secondToFullTime(7601));
    System.out.println("36001 => " + secondToFullTime(36001));
    System.out.println("86401 => " + secondToFullTime(86401));
}

Sortie

60 => 1:00
101 => 1:41
601 => 10:01
7601 => 2:06:41
36001 => 10:00:01
86401 => 1day 00:00:01

Espoir aide

0
répondu Phan Van Linh 2018-09-19 09:30:33