2013-05-27 15 views
7

Il formato predefinito di java.util.date è qualcosa del tipo "Lun 27 maggio 11:46:15 IST 2013". Come posso convertire questo in timestamp e calcolare in secondi la differenza tra lo stesso orario e quello attuale?Converti il ​​formato predefinito java.util.date in Timestamp in Java

java.util.Date date= new java.util.Date(); 
Timestamp ts_now = new Timestamp(date.getTime()); 

Il codice di cui sopra mi dà il timestamp corrente. Tuttavia, non ho idea di come trovare il timestamp della stringa sopra.

+0

possibile duplicato del [stringa di Java per la conversione data] (http://stackoverflow.com/questions/4216745/java-string-to-date-conversion) –

+0

temo che non , Stavo lavorando sul formato timestamp. – swateek

+0

Duplicato: [Java: Converti stringa in TimeStamp] (http://stackoverflow.com/q/18915075/642706) –

risposta

10

È possibile utilizzare la classe Calendar per convertire Date

public long getDifference() 
{ 
    SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd kk:mm:ss z yyyy"); 
    Date d = sdf.parse("Mon May 27 11:46:15 IST 2013"); 

    Calendar c = Calendar.getInstance(); 
    c.setTime(d); 
    long time = c.getTimeInMillis(); 
    long curr = System.currentTimeMillis(); 
    long diff = curr - time; //Time difference in milliseconds 
    return diff/1000; 
} 
+0

Mentre sto provando a convertire "Mon May 27 11:46:15 IST 2013" stringa fino ad oggi. Mi dà un'eccezione di stringa non analizzabile. Qualche idea su come posso andare? – swateek

+0

@Swat: aggiornata la risposta. –

+0

grazie mille @Rahul. In realtà ho combinato la tua risposta con la risposta di Salem sopra per farlo bene. Grazie! :) – swateek

0

È possibile utilizzare

long startTime = date.getTime() * 1000000;; 
    long estimatedTime = System.nanoTime() - startTime; 

per ottenere il tempo in nano.

Java Docs

+0

Come ha convertito la stringa che ho passato? – swateek

+0

@Swat verifica il mio codice :) – nidhin

+0

Voglio convertire "lunedì 27 maggio 11:46:15 IST 2013" questa stringa in data e ora. E trova la differenza tra questo e l'ora corrente ... anche in secondi. – swateek

0

È possibile utilizzare DateFormat per analizzare la data (java.text *.):

DateFormat df = new SimpleDateFormat("EEE MMM dd kk:mm:ss z yyyy", Locale.ENGLISH); 
Date d = df.parse("Mon May 27 11:46:15 IST 2013") 

Avrete devi cambiare il locale in modo che corrisponda al tuo (con questo otterrai 10:46:15). Quindi puoi usare lo stesso codice che hai per convertirlo in un timestamp.

+0

Grazie! Ho usato la tua risposta insieme a @Rahul per farlo bene. – swateek

8

Miglior uno

String str_date=month+"-"+day+"-"+yr; 
DateFormat formatter = new SimpleDateFormat("MM-dd-yyyy"); 
Date date = (Date)formatter.parse(str_date); 
long output=date.getTime()/1000L; 
String str=Long.toString(output); 
long timestamp = Long.parseLong(str) * 1000;