Je code ceci avec Groovy
J'essaie actuellement de convertir une chaîne que j'ai en date sans avoir à faire quelque chose de trop fastidieux.
String theDate = "28/09/2010 16:02:43";
def newdate = new Date().parse("d/M/yyyy H:m:s", theDate)
Sortie:
Tue Aug 10 16:02:43 PST 2010
Le code ci-dessus fonctionne très bien, cependant lorsque ma chaîne change comme suit:
String testDate = "Tue Aug 10 16:02:43 PST 2010"
def newerdate = new Date().parse("d/M/yyyy H:m:s", testDate)
Cela me dit qu '"il n'y a pas une telle valeur pour Tue". J'ai essayé de jeter un 'E' dans l'analyse de la date mais il a été dit que la date ne pouvait pas être analysée.
Quelqu'un peut-il expliquer comment procéder pour analyser le deuxième exemple?
Le premier argument à analyser () est le format attendu. Vous devez changer cela en Date.parse("E MMM dd H:m:s z yyyy", testDate)
pour que cela fonctionne. (Notez que vous n'avez pas besoin de créer un nouvel objet Date, c'est une méthode statique)
Si vous ne savez pas à l'avance quel format, vous devrez trouver une bibliothèque d'analyse syntaxique spéciale pour cela. En Ruby, il existe une bibliothèque appelée Chronic , mais je ne connais pas d'équivalent Groovy. Edit: Il existe un port Java de la bibliothèque appelé jChronic , vous pouvez le vérifier.
Essaye ça:
def date = Date.parse("E MMM dd H:m:s z yyyy", dateStr)
Voici les modèles pour formater les dates
JChronic est votre meilleur choix. Voici un exemple qui ajoute une méthode .fromString()
à la classe Date et qui analyse presque tout ce que vous pouvez lui lancer:
Date.metaClass.'static'.fromString = { str ->
com.mdimension.jchronic.Chronic.parse(str).beginCalendar.time
}
Vous pouvez l'appeler comme ça:
println Date.fromString("Tue Aug 10 16:02:43 PST 2010")
println Date.fromString("july 1, 2012")
println Date.fromString("next tuesday")
Date#parse
est obsolète. L'alternative est:
Java.text.DateFormat#parse
donc :
new SimpleDateFormat("E MMM dd H:m:s z yyyy", Locale.ARABIC).parse(testDate)
Je pense que le meilleur moyen simple dans ce cas est d’utiliser parseToStringDate qui constitue l’une des améliorations de Groovy JDK:
Analyser une chaîne correspondant au modèle EEE MMM jj HH: mm: ss zzz yyyy contenant uniquement les constantes locales US (par exemple, samedi pour les samedis). Tel que chaîne est générée par la méthode toString de Date
Exemple:
println (Date.parseToStringDate("Tue Aug 10 16:02:43 PST 2010").format('MM-dd-yyyy'))
J'espère que cela t'aides.
Vous trouverez ci-dessous la façon dont nous allons dans notre application en développement.
import Java.text.SimpleDateFormat
String newDateAdded = "2018-11-11T09:30:31"
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss")
Date dateAdded = dateFormat.parse(newDateAdded)
println(dateAdded)
La sortie ressemble à
Sun Nov 11 09:30:31 GMT 2018
Dans votre exemple, nous pourrions nous adapter un peu pour répondre à vos besoins. Si j'étais vous, je ferai:
String datePattern = "d/M/yyyy H:m:s"
String theDate = "28/09/2010 16:02:43"
SimpleDateFormat df = new SimpleDateFormat(datePattern)
println df.parse(theDate)
J'espère que cela vous aiderait beaucoup.