2015-07-01 19 views
5

Stavo cercando di aggiungere l'ora corrente alla data precedente. Ma è stato aggiunto in data corrente con il tempo non con la data precedente.Come aggiungere l'ora corrente a una data precedente in java?

vedere il mio codice sotto:

Date startUserDate = ;//this is my previous date object; 
startUserDate.setTime(new Date().getTime());// here i'm trying to add current time in previous date. 
System.out.println("current time with previous Date :"+startUserDate); 

In data precedente non c'è tempo e voglio aggiungere l'ora corrente a precedente date.I può fare questo, ti prego di aiutarmi.

+0

Puoi farlo usando 'DateFormat' e' substring() ', dai un'occhiata alla mia risposta. –

+0

possibile duplicato di [Come impostare il tempo per un oggetto data in java] (http://stackoverflow.com/questions/5165428/how-to-set-time-to-a-date-object-in-java) –

risposta

3

oggetto Usa calendario

Ottenere istanza di oggetto calendario e impostare il tempo passato ad esso Data startUs erDate =;

Calendar calendar = Calendar.getInstance(); 
    calendar.settime(startUserDate); 

Crea nuova istanza calendario

 Calendar cal = Calendar.getInstance(); 
    cal.settime(new Date()); 

formato della data per ottenere la rappresentazione di stringa di tempo della data corrente

 SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); 
     String currentdate = sdf.format(cal.getTime()); 

dividere la stringa per ottenere minuto ora e secondo oggetto

   String hh = expiry.split(":")[0]; 
       String mm = expiry.split(":")[1]; 
       String ss = expiry.split(":")[2]; 

aggiungere all'oggetto solare precedente

calendar .add(Calendar.HOUR_OF_DAY, hh); 
    calendar .add(Calendar.MINUTE, mm); 
    calendar .add(Calendar.SECOND, ss); 

questa data avrà il tempo corrente aggiunto alla tua data di

Date newDate = calendar.getTime; 
0

Il metodo getTime restituisce il numero di millisecondi da 1970/01/01 modo per ottenere la parte della data time è possibile utilizzare un oggetto calendario o semplicemente utilizzare Modula aritmetica (utilizzando il valore millisecondi sopra e le millseconds MAX a un giorno) per estrarre la parte temporale della data.

Poi, quando si ha il tempo è necessario aggiungerlo alla seconda data,

ma sul serio, utilizzare http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html

e usare cose come get (HOUR) e get (MINUTE) ecc che poi è possibile utilizzare con set (HOUR, val)

1

È possibile farlo utilizzando DateFormat e String, ecco la soluzione di cui avete bisogno:

Codice:

DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); 
String timeString = df.format(new Date()).substring(10); // 10 is the beginIndex of time here 

DateFormat df2 = new SimpleDateFormat("MM/dd/yyyy"); 
String startUserDateString = df2.format(startUserDate); 

startUserDateString = startUserDateString+" "+timeString; 
// you will get this format "MM/dd/yyyy HH:mm:ss" 

//then parse the new date here 
startUserDate = df.parse(startUserDateString); 

Spiegazione:

solo convertire la data corrente in una stringa e poi estrarre il tempo da esso usando .substring() metodo, quindi convertire il vostro userDate in una stringa di concatenare la stringa tempo impiegato ad esso e, infine, analizzare questo data per ottenere quello che ti serve.

Esempio:

Si può vedere che funziona in questo ideone DEMO.

Quale richiede 02/20/2002 in input e restituisce 02/20/2002 04:36:14 come risultato.

0

è necessario utilizzare Calendar classe per eseguire Oltre a Date oggetto. La data setTime() imposterà quell'ora nell'oggetto Date ma non la aggiungerà, sovrascriverà la data precedente. new Date().getTime() non restituirà solo la porzione di tempo ma il tempo trascorso da Epoch. Inoltre, come hai manipolato, startUserDate per non avere alcun tempo (voglio dire, era tramite Calendar o Formatter)?

veda la risposta, Time Portion of Date per calcolare unica parte del tempo,

lungo MILLIS_PER_DAY = 24 * 60 * 60 * 1000;
Data ora = Calendar.getInstance(). GetTime();
long timePortion = now.getTime()% MILLIS_PER_DAY;

allora si può usare qualcosa di simile, cal.add(Calendar.MILLISECOND, (int)timePortion); dove Cal è oggetto calendario corrispondente al startUserDate nel codice.

0

Uso Calendar:

  • prima impostare la data/ora del primo oggetto del calendario per la vecchia data di

  • uso oggetto come secondo oggetto Calendar per impostare l'ora corrente sul

  • primo oggetto calendario quindi riconvertire in data

come segue:

//E.g. for startUserDate 
Date startUserDate = new Date(System.currentTimeMillis() - (24L * 60L * 60L * 1000L) - (60L * 60L * 1000L));//minus 1 day and 1 hour 
Calendar calDateThen = Calendar.getInstance(); 
Calendar calTimeNow = Calendar.getInstance(); 
calDateThen.setTime(startUserDate); 
calDateThen.set(Calendar.HOUR_OF_DAY, calTimeNow.get(Calendar.HOUR_OF_DAY)); 
calDateThen.set(Calendar.MINUTE, calTimeNow.get(Calendar.MINUTE)); 
calDateThen.set(Calendar.SECOND, calTimeNow.get(Calendar.SECOND)); 
startUserDate = calDateThen.getTime(); 
System.out.println(startUserDate); 

Il secondo calendario oggetto calTimeNow può essere sostituito con Calendar.getInstance() dove viene utilizzato.

Problemi correlati