L'analyse des dates sans fuseau horaire de conversion
Je suis en train de travailler avec groovy (gremlin pour parcourir un graphe de la base de données pour être exact). Malheureusement, parce que je suis en utilisant gremlin, je ne peux pas importer de nouvelles classes.
J'ai quelques valeurs de date que je souhaite convertir un timestamp Unix. Ils sont stockés en tant que UTC, dans le format: 2012-11-13 14:00:00:000
Je suis d'analyse à l'aide de cet extrait (groovy):
def newdate = new Date().parse("yyyy-M-d H:m:s:S", '2012-11-13 14:00:00:000')
Le problème est qu'il n'a un fuseau horaire de conversion, qui se traduit par:
Tue Nov 13 14:00:00 EST 2012
Et si je puis convertir un timestamp en utilisant time()
, qui est converti à l'UTC, puis le timestamp généré.
Comment puis-je obtenir new Date()
de ne pas le faire n'importe quel fuseau horaire conversions lorsque la date est d'abord analysée (et il suffit de supposer la date UTC)?
new Date().parse("yyyy-M-d H:m:s:S" + " Z", '2012-11-13 14:00:00:000' + ' 0000')
vient à l'esprit...Le groovy console renvoie une erreur et me dit que c'est unparseable 🙁
java.text.ParseException: Unparseable date: "2012-11-13 14:00:00:000 0000"
Cette solution fonctionne pour moi si vous la changez pour
def newdate = new Date().parse("yyyy-M-d H:m:s:S Z", '2012-11-13 14:00:00:000' + ' UTC')
. #parse
est statique btw, donc à moins que Gremlin vous oblige à vous ne devriez pas avoir besoin de créer une instance de Date
l'appeler.Gremlins me l'a fait faire, je vous le jure! 🙂 (copier-coller) | @F21, je suis désolé, le fuseau horaire doit avoir été
' +0000'
, pas ' 0000'
| @jahroy, j'ai pensé que l'exemple que j'ai donné en annexe le fuseau horaire, n'est-ce pas? 🙂Toutes mes excuses... j'ai oublié (dur à lire le code, dans les commentaires, parfois).
OriginalL'auteur F21 | 2012-11-15
Vous devez vous connecter pour publier un commentaire.
Voici deux façons de le faire en Java:
Noter que Date.parse() est obsolète (donc je ne le recommande pas).
Z
(en majuscules) format ensuite, vous devez spécifier un RFC 822 fuseau horaire (+XXXX ou XXXX). Selon les mêmes documents,UTC
devrait théoriquement être parseable avec lez
(en minuscules). Je ne serais pas surpris si, en réalité,parse
traité les deux de façon interchangeable, mais juste pour confirmer (n'ayant pas accès à l'Groovy moi-même): est-ce votre premier exemple ci-dessus fonctionne?Oui. Les deux exemples fonctionné pour moi (avant que je le poste). Cela étant dit, je n'ai pas accès à Groovy (je n'ai jamais utilisé). C'est pourquoi je dis: "Voici deux façons de le faire en Java". Pour être honnête, je ne sais pas vraiment quelle est la relation entre Java et Groovy. Peut-être que cette réponse n'est pas pertinente....
OriginalL'auteur jahroy
Classe Date parse(String str) est déconseillé de JDK 1.1, essayez SimpleDateFormat classe qui prend en charge le Fuseau horaire et les paramètres Régionaux.
OriginalL'auteur Pankaj