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))); }
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 );
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
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?
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.
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); } }