Comment convertir les 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-il m’aider à le convertir?

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

Ça ne pouvait pas être plus facile

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

  private static final Ssortingng FORMAT = "% 02d:% 02d:% 02d"; 

peut avoir une méthode comme:

 public statique Ssortingng parseTime (millisecondes longues) {
       retourne Ssortingng.format (FORMAT,
               TimeUnit.MILLISECONDS.toHours (millisecondes),
               TimeUnit.MILLISECONDS.toMinutes (millisecondes) - TimeUnit.HOURS.toMinutes (
               TimeUnit.MILLISECONDS.toHours (millisecondes)),
               TimeUnit.MILLISECONDS.toSeconds (millisecondes) - TimeUnit.MINUTES.toSeconds (
               TimeUnit.MILLISECONDS.toMinutes (millisecondes)));
    }

tl; dr

 Duration.ofMinutes( 260L ) .toSsortingng() 

PT4H20M

… ou …

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

04:20

Duration

Les classes java.time incluent une paire de classes pour représenter les plages de temps. La classe de Duration correspond aux heures-minutes-secondes et la Period aux années-mois-jours.

 Duration d = Duration.ofMinutes( 260L ); 

ISO 8601

La norme ISO 8601 définit des formats textuels pour les valeurs date-heure. Pour les plages horaires indépendantes du scénario, le format standard est PnYnMnDTnHnMnS . Le P marque le début et le T sépare les années-mois des heures-minutes-secondes. Donc, une heure et demie est PT1H30M .

Les classes java.time utilisent les formats ISO 8601 par défaut pour parsingr et générer des chaînes. Les classes Duration et Period utilisent ce format standard particulier. Donc, appelez simplement toSsortingng .

 Ssortingng output = d.toSsortingng(); 

PT4H20M

Pour une mise en forme alternative, créez votre propre chaîne dans Java 9 et versions ultérieures ( pas dans Java 8) avec les méthodes Duration::to…Part . Ou voyez cette réponse pour utiliser 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 piratant avec la classe LocalTime . Cela fonctionne si votre durée ne dépasse pas 24 heures.

 LocalTime hackUseOfClockAsDuration = LocalTime.MIN.plus( d ); Ssortingng output = hackUseOfClockAsDuration.toSsortingng(); 

04:20


À propos de java.time

Le framework java.time est intégré à Java 8 et versions ultérieures. Ces classes supplantent les anciennes classes de date / heure héritées telles que java.util.Date , Calendar et SimpleDateFormat .

Le projet Joda-Time , maintenant en mode maintenance , conseille la migration vers les classes java.time .

Pour en savoir plus, consultez le didacticiel Oracle . Et recherchez Stack Overflow pour de nombreux exemples et explications. La spécification est JSR 310 .

Où obtenir les classes java.time?

  • Java SE 8 et SE 9 et versions ultérieures
    • Intégré
    • Partie de l’API Java standard avec une implémentation intégrée.
    • Java 9 ajoute quelques fonctionnalités et corrections mineures.
  • Java SE 6 et SE 7
    • Une grande partie de la fonctionnalité java.time est transférée vers Java 6 et 7 dans ThreeTen-Backport .
  • Android
    • Le projet ThreeTenABP adapte ThreeTen-Backport (mentionné ci-dessus) pour Android en particulier.
    • Voir Comment utiliser ThreeTenABP… .

Le projet ThreeTen-Extra étend java.time avec des classes supplémentaires. Ce projet est un terrain d’essai pour d’éventuels ajouts futurs à java.time. Vous pouvez y trouver des classes utiles telles que Interval , YearWeek , YearQuarter , etc.

Utilisez java.text.SimpleDateFormat pour convertir minute en heures et minutes

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

Cela peut être fait comme ça

  int totalMinutesInt = Integer.valueOf(totalMinutes.toSsortingng()); int hours = totalMinutesInt / 60; int hoursToDisplay = hours; if (hours > 12) { hoursToDisplay = hoursToDisplay - 12; } int minutesToDisplay = totalMinutesInt - (hours * 60); Ssortingng 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(); 

Minutes mod 60 donnera des heures avec les minutes restantes.

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

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

Essayez ce code:

 import java.util.Scanner; public class BasicElement { public static void main(Ssortingng[] 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"); } } 

Étant donné la saisie en quelques secondes, vous pouvez transformer en 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 puisque l’entrée peut être supérieure à 86 400 secondes, soit 24 heures.

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

J’espère que ça aide.

J’utilise cette fonction pour mes projets:

  public static Ssortingng minuteToTime(int minute) { int hour = minute / 60; minute %= 60; Ssortingng 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; } 

(En Kotlin) Si vous allez mettre la réponse dans un TextView ou quelque chose que vous pouvez utiliser à la place une ressource de chaîne:

 %02d:%02d 

Et puis, vous pouvez utiliser cette ressource Ssortingng pour définir le texte au moment de l’exécution en utilisant:

 private fun setTime(time: Int) { val hour = time / 60 val min = time % 60 main_time.text = getSsortingng(R.ssortingng.time, hour, min) } 

vous avez oublié la parole 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 Math.floor nous avons ce résultat: 9h45 au lieu de 8h45.

calculer les minutes en utilisant ce code:

 long difference = new Date().getTime() - user.getUpdatedDate().getTime(); int minutes = (int) TimeUnit.MILLISECONDS.toMinutes(difference); 

En swift

 func timeSsortingngFrom(minutes:Double) -> Ssortingng { return "\(Int(minutes/60)):\(Int(minutes) % 60)" } 
 int mHours = t / 60; //since both are ints, you get an int int mMinutes = t % 60; System.out.printf("%d:%02d", "" +mHours, "" +mMinutes); 
 import java.util.Scanner; public class Time{ public static void main(Ssortingng[]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); } }