2010-10-12 6 views
2

Existe-t-il un moyen de déterminer le format de la date en Java de manière similaire à .Net?Java Date Analyse de l'un à l'autre format

Prenons l'exemple suivant:

private String reformatDateString(String dateParam){ 
    if(dateParam == null || dateParam.isEmpty()){ 
     return null; 
    } 
    try{ 
     SimpleDateFormat inDateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
     Date fromDate = inDateFormat.parse(dateParam); 

     SimpleDateFormat outDateForm = new SimpleDateFormat("yy-MM-dd"); 
     return outDateForm.format(fromDate); 
    } catch(ParseException e){ 
     e.printStackTrace(); 
     return null; 
    } 
} 

est-il un moyen plus facile pour l'analyseur de connaître le inDateFormat au lieu de fournir strictement les deux formats?

Répondre

1

La meilleure façon que je puisse penser est l'ancien constructeur Date(String) qui repose sur la méthode statique Date.parse(String). Il peut ou non soutenir réellement ces syntaxes.

De javadoc Date.parse(String):

Il accepte plusieurs syntaxes; en particulier, il reconnaît la syntaxe de date standard de l'IETF: "Sat, 12 août 1995 13:30:00 GMT". Il comprend également les abréviations de fuseau horaire continental des États-Unis, mais pour un usage général, un décalage de fuseau horaire devrait être utilisé: "Sat, 12 août 1995 13:30:00 GMT + 0430" (4 heures, 30 minutes à l'ouest de Greenwich méridien). Si aucun fuseau horaire n'est spécifié, le fuseau horaire local est supposé. GMT et UTC sont considérés comme équivalents.

Malheureusement cette méthode est dépréciée en faveur de vous demandant explicitement le format de date donc besoin d'utiliser une méthode d'assistance. Votre code ci-dessus est déjà un bon début, je vous recommande donc d'étendre ce que vous avez. La documentation de la fonction d'analyse de date .NET répertorie probablement les formats pris en charge. Avec votre propre implémentation, il y aura une préséance claire des formats et aucune ambiguïté.

Une recherche rapide a révélé d'autres questions indiquant que SimpleDateFormat est le chemin à parcourir pour les dates d'analyse. Voir A non-deprecated exact equivalent of Date(String s) in Java?

1

Votre question m'intéressait alors j'ai vérifié le fichier JavaDoc pour SimpleDateFormat, DateFormat, Date et Calendar pour voir si je pouvais résoudre ce problème.

Si vous savez que la chaîne de date transmise sera toujours au format adapté à l'environnement local actuel, vous pouvez utiliser les méthodes d'usine dans DateFormat, les méthodes GetDateInstance.

À part ça ... il faudrait que je dise non. Du moins pas à ma connaissance.

Je vais regarder cette question avec intérêt.