2013-04-06 3 views
2

J'ai une valeur de date de type "2013-03-28T15: 16: 58.000Z". Je veux le convertir au format "jj-MMM-yyyy". Pour cela, je l'ai utilisé le code suivant:L'analyse syntaxique SimpleDateFormat renvoie la valeur null

public static String getTime(String time) 
{ 
    try 
    {   
     String tim = time.replace("T", " "); 
     SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSZ", Locale.US); 
     SimpleDateFormat df2 = new SimpleDateFormat("dd-MMM-yyyy", Locale.US); 

     return df2.format(df1.parse(tim)); 
    } 
    catch (ParseException e) 
    { 
     return null; 
    } 
} 

Je suis arrivé cette solution à partir d'une variété de messages ici à StackOverflow. Mais ce code renvoie toujours null. Quelqu'un peut-il me dire pourquoi?

Répondre

4

La valeur null est renvoyée du bloc d'exception en raison du premier SimpleDateFormat retour null en raison d'un format de date non valide.

Le modèle Z est utilisé pour indiquer les modèles de fuseau horaire. Pour accepter un caractère littéral Z, vous devez entourer le caractère de guillemets simples.

new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS'Z'", Locale.US); 

En outre, vous pouvez faire la même chose avec le caractère T si vous ne souhaitez pas faire un remplacement manuel:

Au lieu de

String tim = time.replace("T", " "); // remove 

il suffit d'utiliser time et de l'utilisation:

new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US); 
0

Il lance une analyse ParseException de la chaîne 2013-03-28 15: 16: 58.000Z.

Essayez de se débarrasser de la Z [comme vous l'avez fait avec le T] et en utilisant un SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS", Locale.US)

+1

Ou essayez de traiter correctement Z et T comme la question ci-dessous, mais avec l'ajout suivant 'new SimpleDateFormat (" yyyy-MM-dd'T'HH: mm: ss.SSS'Z '", Locale.US) " – ararog

2

Il retourne nul parce qu'il est d'attraper un ParseException et vous dites à retourner null. Vous devriez au moins imprimer la pile et cela devrait vous dire pourquoi vous obtenez le ParseException.

Questions connexes