2012-01-26 8 views
24

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

+0

Troverete questo utile http://stackoverflow.com/questions/759036/how-to-convert-string-into-time-format-and-add-two-hours – Jayy

+0

Dont Dimentica le virgolette se vuoi che sia una stringa. – Philippe

+0

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) –

risposta

57

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.

+0

newTime è una stringa, in cui cal.getTime() restituisce la data – junaidp

+0

@junaidp ringrazia, riparato spero. – m0s

+2

L'API di data/ora java è irrimediabilmente obsoleta, anche al punto che Joda Time potrebbe essere inclusa nei futuri JDK. Si prega di considerare la risposta di Jon Skeet. –

2

è necessario convertirlo in una data, in cui è possibile aggiungere un certo numero di secondi, e riconvertirlo in una stringa.

10

Utilizzare il metodo Calendar.add(int field,int amount).

0

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.

17

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.

0

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 
+0

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

+0

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

+0

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

2

Java 7 Tempo API

DateTimeFormatter df = DateTimeFormatter.ofPattern("HH:mm"); 

    LocalTime lt = LocalTime.parse("14:10"); 
    System.out.println(df.format(lt.plusMinutes(10))); 
0

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()))); 
Problemi correlati