Sortie RFC 3339 Timestamp en Java
Je veux à la sortie d'un timestamp avec un PST de décalage (par exemple, 2008-11-13T13:23:30-08:00). java.util.SimpleDateFormat
ne semble pas à la sortie de décalage horaire dans la heure:minute format, il exclut le côlon. Est-il un moyen simple d'obtenir que le timestamp en Java?
//I want 2008-11-13T12:23:30-08:00
String timestamp = new SimpleDateFormat("yyyy-MM-dd'T'h:m:ssZ").format(new Date());
System.out.println(timestamp);
//prints "2008-11-13T12:23:30-0800" See the difference?
Aussi, SimpleDateFormat
ne peut pas analyser correctement l'exemple ci-dessus. Il jette un ParseException
.
//Throws a ParseException
new SimpleDateFormat("yyyy-MM-dd'T'h:m:ssZ").parse("2008-11-13T13:23:30-08:00")
InformationsquelleAutor Cristian | 2008-11-14
Vous devez vous connecter pour publier un commentaire.
De départ dans Java 7, il y a le
X
chaîne de modèle pour ISO8601 fuseau horaire. Pour les chaînes de caractères dans le format que vous décrivez, l'utilisationXXX
. Voir la documentation.Exemple:
Résultat:
Découvrez la Joda Time paquet. Ils font de la RFC 3339 date de mise en forme est beaucoup plus facile.
Joda Exemple:
toString
méthode, que ce soit explicitement ou implicitement. Comme ça,String output = dt.toString();
De la "get it done dept," une solution consiste à utiliser regexes pour fixer la chaîne après SimpleDateFormat est terminé. Quelque chose comme s/(\d{2})(\d{2})$/$1:$2/en Perl.
Si vous êtes même à distance intéressé par cela, je vais modifier cette réponse avec le code Java.
Mais, ouais. Je suis frapper ce problème aussi. RFC3339, je suis à la recherche à vous!
EDIT:
Cela fonctionne pour moi
J'ai passé beaucoup de temps à la recherche d'une réponse à la même question et j'ai trouvé quelque chose ici : http://developer.android.com/reference/java/text/SimpleDateFormat.html
Proposition de réponse:
String timestamp = new SimpleDateFormat("yyyy-MM-dd'T'h:m:ssZZZZZ").format(new Date());
Si vous remarquez que je suis à l'aide de 5 'Z' au lieu d'un. Cela donne à la sortie avec les deux points dans le décalage comme ceci: "2008-11-13T12:23:30-08:00". Espérons que cela aide.
Caused by: java.lang.IllegalArgumentException: Illegal pattern component: XXX at org.apache.commons.lang.time.FastDateFormat.parsePattern(FastDateFormat.java:691) at org.apache.commons.lang.time.FastDateFormat.init(FastDateFormat.java:558)
Le problème est que Z produit le décalage de fuseau horaire, sans un signe deux-points (:) comme séparateur.
N'est pas exactement ce dont vous avez besoin?
J'ai trouvé un chien errant PasteBin qui a aidé à m'en sortir avec la question: http://pastebin.com/y3TCAikc
Juste au cas où son contenu par la suite supprimé:
J'ai fait un InternetDateFormat classe pour RFC3339.
Mais le code source de commentaire, c'est Japonais.
PS:j'ai créé anglais, édition et refactoring un peu.