2013-03-15 3 views
10

Come analizzare questa stringa di data 2013-03-13T20: 59: 31 + 0000 in Data oggetto?Come parse 2013-03-13T20: 59: 31 + 0000 data stringa a Data

Ho provato in questo modo ma non funziona.

DateFormat df = new SimpleDateFormat("YYYY-MM-DDThh:mm:ssTZD"); 
Date result = df.parse(time); 
+0

vrijeme? cos'è questo ? – yannicuLar

+1

assumendo 'vrijeme =" 2013-03-13T20: 59: 31 + 0000 "' controlla la mia risposta qui sotto. Qual è stata la tua intenzione con il TZD alla fine? Z è quello che ti serve per il fuso orario. D sarebbe giorno per anno ma non lo hai nel tuo 'vrijeme' quindi non verrà analizzato correttamente – msam

+0

La prossima volta, ricordati di includere il link di traduzione. almeno ci salverebbe dall'indovinare la tua lingua;) C'è un motivo per dare nomi alle variabili – yannicuLar

risposta

22

DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZ");

L'anno è in minuscolo y. Tutti i caratteri che sono l'input che non sono correlato alla data (come il 'T' in 2013-03-13T20:59:31+0000 devono essere indicati in ''.

Per un elenco delle lettere modello definito vedono i documentation

controlli Parse che la data indicata è nel formato specificato per stampare la data in un formato specifico dopo aver verificato vedere di seguito:.

DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZ"); 
Date result; 
try { 
    result = df.parse("2013-03-13T20:59:31+0000"); 
    System.out.println("date:"+result); //prints date in current locale 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    sdf.setTimeZone(TimeZone.getTimeZone("GMT")); 
    System.out.println(sdf.format(result)); //prints date in the format sdf 
} 
+0

non funziona .... –

+0

@ HarisDautović stai usando il corretto 'per circondare la T? questo è Alt + 39 non qualche altro apostrofo come ' – msam

+0

ALT + 39 =) .... Ho trovato la soluzione, controllo la mia risposta. –

20

Prova:

DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); 

controllo http://developer.android.com/reference/java/text/SimpleDateFormat.html

in specifico:

    yyyy-MM-dd 1969-12-31 
       yyyy-MM-dd 1970-01-01 
      yyyy-MM-dd HH:mm 1969-12-31 16:00 
      yyyy-MM-dd HH:mm 1970-01-01 00:00 
      yyyy-MM-dd HH:mmZ 1969-12-31 16:00-0800 
      yyyy-MM-dd HH:mmZ 1970-01-01 00:00+0000 
    yyyy-MM-dd HH:mm:ss.SSSZ 1969-12-31 16:00:00.000-0800 
    yyyy-MM-dd HH:mm:ss.SSSZ 1970-01-01 00:00:00.000+0000 
yyyy-MM-dd'T'HH:mm:ss.SSSZ 1969-12-31T16:00:00.000-0800 
yyyy-MM-dd'T'HH:mm:ss.SSSZ 1970-01-01T00:00:00.000+0000 
+0

Grazie per la risposta, hmm .. ho un'eccezione: carattere modello sconosciuto 'T' –

+0

provare DateFormat df = new SimpleDateFormat ("aaaa-MM-gg'T'HH: mm: ssZ") ; – Nermeen

3

Si prega di provare questo:

SimpleDateFormat formatDate; 
formatDate= new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); 
0

Grazie a tutte le persone che hanno cercato di aiutarmi a ... (1) per tutti .......

Questo funziona: "yyyy-MM-dd'T'HH:mm:ss"

+0

è possibile aggiungere una Z dopo lo ss per il fuso orario altrimenti "2013-03-13T20: 59: 31 + 9999" sarà accettato anche – msam

+0

Quando aggiungo Z ("yyyy-MM-dd'T'HH: mm: ssZ"), l'ora non viene analizzata correttamente, viene aumentata di uno. –

+1

Ciò accade perché quando si stampa, la data viene riformattata nella propria lingua. sei in GMT + 1? ... Aggiungerò il codice per mostrarti come esportare la data in GMT – msam

0

Per 2017/02/08 06:23:35 +0000 questo tipo di formato di data, io uso sotto formato:

SimpleDateFormat formatDate; 
formatDate= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ZZZ"); 

Il suo lavoro per me. Altre risposte non funzionano per me.