sto ottenendo questa voltaJava: come aggiungere 10 minuti nel mio tempo
String myTime = "14:10";
Ora voglio aggiungere come 10 minuti per questa volta, in modo che sarebbe 14:20
Questo è possibile e se sì, come?
Grazie
sto ottenendo questa voltaJava: come aggiungere 10 minuti nel mio tempo
String myTime = "14:10";
Ora voglio aggiungere come 10 minuti per questa volta, in modo che sarebbe 14:20
Questo è possibile e se sì, come?
Grazie
Qualcosa di simile
String myTime = "14:10";
SimpleDateFormat df = new SimpleDateFormat("HH:mm");
Date d = df.parse(myTime);
Calendar cal = Calendar.getInstance();
cal.setTime(d);
cal.add(Calendar.MINUTE, 10);
String newTime = df.format(cal.getTime());
Come un avvertimento fiera ci potrebbero essere alcuni problemi se l'ora legale è coinvolto in questo periodo di 10 minuti.
è necessario convertirlo in una data, in cui è possibile aggiungere un certo numero di secondi, e riconvertirlo in una stringa.
Utilizzare il metodo Calendar.add(int field,int amount)
.
Si consiglia di memorizzare l'ora come numeri interi e di regolarla tramite gli operatori divisione e modulo, una volta eseguita conversione degli interi nel formato stringa richiesto.
userei Joda Time, analizzare il tempo come un LocalTime
, e quindi utilizzare
time = time.plusMinutes(10);
programma breve ma completo per dimostrare questo:
import org.joda.time.*;
import org.joda.time.format.*;
public class Test {
public static void main(String[] args) {
DateTimeFormatter formatter = DateTimeFormat.forPattern("HH:mm");
LocalTime time = formatter.parseLocalTime("14:10");
time = time.plusMinutes(10);
System.out.println(formatter.print(time));
}
}
Nota che avrei sicuramente uso Joda Ora invece di java.util.Date/Calendar, se possibile, è una molto più API.
Hai un sacco di semplici approcci nelle risposte di cui sopra. Questa è solo un'altra idea. Puoi convertirlo in millisecondi e aggiungere TimeZoneOffset e aggiungere/dedurre i minuti/ore/giorni ecc. Di millisecondi.
String myTime = "14:10";
int minsToAdd = 10;
Date date = new Date();
date.setTime((((Integer.parseInt(myTime.split(":")[0]))*60 + (Integer.parseInt(myTime.split(":")[1])))+ date1.getTimezoneOffset())*60000);
System.out.println(date.getHours() + ":"+date.getMinutes());
date.setTime(date.getTime()+ minsToAdd *60000);
System.out.println(date.getHours() + ":"+date.getMinutes());
uscita:
14:10
14:20
Una cosa che ho imparato a fare matematica del tempo nel modo più duro è il maledetto secondo ... non dovresti mai fare calcoli temporali basati su costanti di tempo comunemente note (cioè 1 minuto = 60 secondi) quando si ha a che fare con il tempo in java. – m0s
Grazie per il tuo commento. Se riesci a spiegare il motivo per cui "mai fare calcoli temporali basati su costanti di tempo comunemente note (cioè 1 minuto = 60 secondi) quando si ha a che fare con il tempo in java", sarebbe davvero utile per tutti noi compresi me. – namalfernandolk
fare riferimento a http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Date.html e http://lpar.ath0.com/2008/09/16/the- discontinuità-secondo-dibattito/e http://tripoverit.blogspot.com/2007/07/java-calculate-difference-between-two.html – m0s
Java 7 Tempo API
DateTimeFormatter df = DateTimeFormatter.ofPattern("HH:mm");
LocalTime lt = LocalTime.parse("14:10");
System.out.println(df.format(lt.plusMinutes(10)));
ho usato il codice qui sotto per aggiungere un certo intervallo di tempo per l'ora corrente.
int interval = 30;
SimpleDateFormat df = new SimpleDateFormat("HH:mm");
Calendar time = Calendar.getInstance();
Log.i("Time ", String.valueOf(df.format(time.getTime())));
time.add(Calendar.MINUTE, interval);
Log.i("New Time ", String.valueOf(df.format(time.getTime())));
Troverete questo utile http://stackoverflow.com/questions/759036/how-to-convert-string-into-time-format-and-add-two-hours – Jayy
Dont Dimentica le virgolette se vuoi che sia una stringa. – Philippe
possibile duplicato di [Come posso dire 5 secondi da ora in Java?] (Http://stackoverflow.com/questions/1655357/how-do-i-say-5-seconds-from-now-in-java) –