Necesito convertir minutos a horas y minutos en java. Por ejemplo, 260 debería ser 4:20. ¿Alguien puede ayudarme a convertirlo?
Necesito convertir minutos a horas y minutos en java. Por ejemplo, 260 debería ser 4:20. ¿Alguien puede ayudarme a convertirlo?
Respuestas:
Si tu tiempo está en una variable llamada t
int hours = t / 60; //since both are ints, you get an int
int minutes = t % 60;
System.out.printf("%d:%02d", hours, minutes);
No podría ser más fácil
Duration?
tpuede ser <0(negativo), la segunda línea debería ser int minutes = Math.abs(t) % 60;.
Duration.ofMinutes( 260L )
.toString()
PT4H20M
... o ...
LocalTime.MIN.plus(
Duration.ofMinutes( 260L )
).toString()
04:20
DurationLas clases java.time incluyen un par de clases para representar períodos de tiempo. La Durationclase es para horas-minutos-segundos y Periodes para años-meses-días.
Duration d = Duration.ofMinutes( 260L );
Duration partesAcceda a cada parte del Durationllamando to…Part. Estos métodos se agregaron en Java 9 y versiones posteriores.
long days = d.toDaysPart() ;
int hours = d.toHoursPart() ;
int minutes = d.toMinutesPart() ;
int seconds = d.toSecondsPart() ;
int nanos = d.toNanosPart() ;
Luego, puede ensamblar su propia cuerda a partir de esas partes.
El estándar ISO 8601 define formatos textuales para valores de fecha y hora. Para lapsos de tiempo no vinculados a la línea de tiempo, el formato estándar es PnYnMnDTnHnMnS. El Pmarca el comienzo y Tsepara los años-meses-días de las horas-minutos-segundos. Entonces una hora y media es PT1H30M.
Las clases java.time utilizan formatos ISO 8601 de forma predeterminada para analizar y generar cadenas. Las clases Durationy Periodutilizan este formato estándar en particular. Así que simplemente llama toString.
String output = d.toString();
PT4H20M
Para un formato alternativo, cree su propia cadena en Java 9 y posterior ( no en Java 8) con los Duration::to…Partmétodos. O vea esta respuesta para usar regex para manipular la cadena con formato ISO 8601.
LocalTimeSugiero encarecidamente utilizar el formato estándar ISO 8601 en lugar del formato de reloj extremadamente ambiguo y confuso de 04:20. Pero si insistes, puedes conseguir este efecto pirateando con la LocalTimeclase. Esto funciona si su duración no supera las 24 horas.
LocalTime hackUseOfClockAsDuration = LocalTime.MIN.plus( d );
String output = hackUseOfClockAsDuration.toString();
04:20
El marco java.time está integrado en Java 8 y versiones posteriores. Estas clases suplantar la vieja problemáticos heredados clases de fecha y hora como java.util.Date, Calendar, y SimpleDateFormat.
El proyecto Joda-Time , ahora en modo de mantenimiento , aconseja la migración a las clases java.time .
Para obtener más información, consulte el tutorial de Oracle . Y busque Stack Overflow para obtener muchos ejemplos y explicaciones. La especificación es JSR 310 .
¿Dónde obtener las clases java.time?
El proyecto ThreeTen-Extra extiende java.time con clases adicionales. Este proyecto es un campo de pruebas para posibles adiciones futuras a java.time. Usted puede encontrar algunas clases útiles aquí, como Interval, YearWeek, YearQuarter, y más .
Duration::to…Partmétodos que se muestran mis ediciones a esta Respuesta. Puede ensamblar fácilmente su propia cuerda a partir de esas partes.
También puede utilizar la clase TimeUnit . Podrías definir
Cadena final estática privada FORMAT = "% 02d:% 02d:% 02d";puede tener un método como:
public static String parseTime (milisegundos largos) {
return String.format (FORMAT,
TimeUnit.MILLISECONDS.toHours (milisegundos),
TimeUnit.MILLISECONDS.toMinutes (milisegundos) - TimeUnit.HOURS.toMinutes (
TimeUnit.MILLISECONDS.toHours (milisegundos)),
TimeUnit.MILLISECONDS.toSeconds (milisegundos) - TimeUnit.MINUTES.toSeconds (
TimeUnit.MILLISECONDS.toMinutes (milisegundos)));
}
Úselo java.text.SimpleDateFormatpara convertir minutos en horas y minutos
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();
}
Se puede hacer así
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);
Prueba este código:
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");
}
}
Dada la entrada en segundos, puede transformar al formato hh: mm: ss de esta manera:
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;
He usado formatHelper ya que la entrada puede ser de más de 86 400 segundos, que son 24 horas.
Si desea que el tiempo total de su entrada esté representado por hh: mm: ss, puede simplemente evitar formatHelper.
Espero que ayude.
Utilizo esta función para mis proyectos:
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 va a poner la respuesta en un TextView o algo, puede usar un recurso de cadena:
<string name="time">%02d:%02d</string>
Y luego puede usar este recurso String para luego configurar el texto en tiempo de ejecución usando:
private fun setTime(time: Int) {
val hour = time / 60
val min = time % 60
main_time.text = getString(R.string.time, hour, min)
}
Aquí está mi función para convertir a second, millisecondaday,hour,minute,second
public static String millisecondToFullTime(long millisecond) {
return timeUnitToFullTime(millisecond, 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);
}
}
Pruebas
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));
}
Salida
60 => 1:00
101 => 1:41
601 => 10:01
7601 => 2:06:41
36001 => 10:00:01
86401 => 1day 00:00:01
Espero que ayude
Minutos mod 60 dará horas con minutos restantes.
se te olvida el piso en tu respuesta:
int hours = Math.floor(t / 60);
int minutes = t % 60;
System.out.printf("%d:%02d", hours, minutes);
sin él, su resultado es falso en ciertos casos como, por ejemplo:
t = 525
hours = 8.75
así que sin Math.floor tenemos este resultado: 9h45 en lugar de 8h45.
calcule los minutos usando este código:
long difference = new Date().getTime() - user.getUpdatedDate().getTime();
int minutes = (int) TimeUnit.MILLISECONDS.toMinutes(difference);
En 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);
}
}