segundos - Cómo convertir minutos a horas y minutos(hh: mm) en java
convertir una cantidad de segundos a su equivalente en días horas minutos y segundos java (16)
Necesito convertir minutos a horas y minutos en Java. Por ejemplo 260 debe ser 4:20. ¿Alguien puede ayudarme a cómo convertirlo?
tl; dr
Duration.ofMinutes( 260L )
.toString()
PT4H20M
... o ...
LocalTime.MIN.plus(
Duration.ofMinutes( 260L )
).toString()
04:20
Duration
Las clases java.time incluyen un par de clases para representar períodos de tiempo. La clase de Duration
es de horas-minutos-segundos, y el Period
es de años-meses-días.
Duration d = Duration.ofMinutes( 260L );
ISO 8601
El estándar ISO 8601 define formatos de texto para valores de fecha y hora. Durante períodos de tiempo no vinculados a la línea de tiempo, el formato estándar es PnYnMnDTnHnMnS
. La P
marca el comienzo, y la T
separa los años-mes-días de las horas-minutos-segundos. Entonces una hora y media es PT1H30M
.
Las clases java.time usan formatos ISO 8601 por defecto para analizar y generar cadenas. Las clases de Duration
y Period
usan este formato estándar particular. Así que simplemente llame a toString
.
String output = d.toString();
PT4H20M
Para el formato alternativo, construya su propia cadena en Java 9 y posterior ( no en Java 8) con los métodos de la Duration::to…Part
O vea esta Respuesta para usar expresiones regulares para manipular la cadena formateada ISO 8601.
LocalTime
Sugiero usar el formato estándar ISO 8601 en lugar del formato de reloj extremadamente ambiguo y confuso de 04:20
. Pero si insistes, puedes obtener este efecto pirateando con la clase LocalTime
. Esto funciona si tu duración no es superior a 24 horas.
LocalTime hackUseOfClockAsDuration = LocalTime.MIN.plus( d );
String output = hackUseOfClockAsDuration.toString();
04:20
Acerca de java.time
El marco java.time está integrado en Java 8 y posterior. Estas clases suplantan a las problemáticas antiguas clases legacy 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 para obtener muchos ejemplos y explicaciones. La especificación es JSR 310 .
¿Dónde obtener las clases de java.time?
- Java SE 8 y SE 9 y posteriores
- Incorporado.
- Parte de la API Java estándar con una implementación integrada.
- Java 9 agrega algunas características y correcciones menores.
- Java SE 6 y SE 7
- Gran parte de la funcionalidad de java.time se transfiere a Java 6 y 7 en ThreeTen-Backport .
- Android
- El proyecto ThreeTenABP adapta ThreeTen-Backport (mencionado anteriormente) específicamente para Android.
- Consulte Cómo utilizar ThreeTenABP ....
El proyecto ThreeTen-Extra amplía java.time con clases adicionales. Este proyecto es un terreno de prueba para posibles adiciones futuras a java.time. Puede encontrar algunas clases útiles aquí, como Interval
, YearWeek
, YearQuarter
y more .
(En Kotlin) Si va a poner la respuesta en un TextView o algo, puede usar un recurso de cadena en su lugar:
<string name="time">%02d:%02d</string>
Y luego puede usar este recurso de Cadena para 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)
}
Dada la entrada en segundos puede transformar para formatear 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 más de 86 400 segundos, que es de 24 horas.
Si desea un tiempo total de su entrada representado por hh: mm: ss, puede evitar formatHelper.
Espero que ayude.
En Swift
func timeStringFrom(minutes:Double) -> String {
return "/(Int(minutes/60)):/(Int(minutes) % 60)"
}
Minutos mod 60 dará horas con minutos restantes.
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");
}
}
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();
También puede usar la clase TimeUnit . Podrías definir
private static final String FORMAT = "%02d:%02d:%02d"; puede tener un método como:
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))); }
Use java.text.SimpleDateFormat
para 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();
}
Uso 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;
}
calcule los minutos usando este código:
long difference = new Date().getTime() - user.getUpdatedDate().getTime();
int minutes = (int) TimeUnit.MILLISECONDS.toMinutes(difference);
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
entonces sin Math.floor tenemos este resultado: 9h45 en lugar de 8h45.
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
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);
}
}
int mHours = t / 60; //since both are ints, you get an int
int mMinutes = t % 60;
System.out.printf("%d:%02d", "" +mHours, "" +mMinutes);
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);