Comment convertir minutes en heures et minutes (hh:mm) en java
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
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))); }
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?
- Java SE 8 et SE 9 et plus tard
- Built-in.
- fait partie de L'API Java standard avec une implémentation groupée.
- Java 9 ajoute des fonctionnalités mineures et des corrections.
- Java SE 6 et SE 7
- une grande partie de la java.la fonctionnalité time est rétroportée à Java 6 & 7 dans ThreeTen-Backport .
- Android
- le ThreeTenABP project adapts ThreeTen-Backport (mentionné ci-dessus) pour Android spécifiquement.
- voir comment utiliser ThreeTenABP... .
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 .
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();
}
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();
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(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");
}
}
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.
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;
}
(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)
}
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.
calculer les minutes en utilisant ce code:
long difference = new Date().getTime() - user.getUpdatedDate().getTime();
int minutes = (int) TimeUnit.MILLISECONDS.toMinutes(difference);
Swift
func timeStringFrom(minutes:Double) -> String {
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(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);
}
}
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