La conversion de chaîne à ce jour avec le fuseau horaire
J'ai une chaîne de caractères dans le modèle aaaa-MM-jj hh:mm
et je peux obtenir le fuseau horaire de l'objet, séparément, dans lequel le au-dessus de chaîne de caractères représentant la date.
Je veux convertir ce pour le format ci-dessous.
aaaa-MM-jj HH:mm:ss Z
Comment puis-je faire cela?
joda-time.sourceforge.net en fait tous les jour les manipulations en java beaucoup plus facile
j'ai appris à connaître cette fonction après avoir dit :), Merci.
Pour info, le Joda-Time le projet est maintenant dans entretien, avec l'équipe conseiller de migration de la java.de temps les classes.
j'ai appris à connaître cette fonction après avoir dit :), Merci.
Pour info, le Joda-Time le projet est maintenant dans entretien, avec l'équipe conseiller de migration de la java.de temps les classes.
OriginalL'auteur John | 2010-11-17
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser SimpleDateFormat avec
yyyy-MM-dd HH:mm:ss
et de définir explicitement le Fuseau horaire:Imprime:
Mise à jour 2010-12-01:
Si vous souhaitez explicitement impression spéciale du Fuseau horaire, de le fixer dans le SimpleDateFormat:
Qui imprime
2010-11-17 13:12:00 +0530
Désolé, je ne comprends pas ta deuxième phrase. Pensez-vous que quelque chose est mal?
Michael, je suis en train de dire que le temps se converti correctement, mais voir le "Z" de la partie dans les valeurs de la date imprimée+0100" il n'a pas les changements.Par exemple si je suis la conversion d'une date du GMT de l'IST, puis le "Z" du converti date doit être "+0530".
Cela dépend du système de l'exécution du code. Pour
IST
il imprime2010-11-17 07:42:00 +0000
sur ideone.La distinction entre la génération d'une date valide explicitement avec un Fuseau horaire défini lors de l'analyse et l'impression de la date, avec un explicite Fuseau horaire.
OriginalL'auteur Michael Konietzka
tl;dr
Éviter héritage de date-heure classes
Les autres Réponses utilisez le gênants vieille date-heure de cours (
Date
,Calendar
, etc.), maintenant héritage, supplanté par le java.les classes de temps.LocalDateTime
Une chaîne d'entrée est dépourvue de toute indication de décalage de l'UTC ou de fuseau horaire. Nous avons donc analyser comme un
LocalDateTime
.Définir un modèle de mise en forme pour correspondre à votre entrée avec un
DateTimeFormatter
objet.Noter qu'un
LocalDateTime
est pas un moment précis, qu'une vague idée sur une série de moments. Par exemple, quelques minutes après minuit à Paris, la France est encore “hier” à Montréal, Canada. Donc, sans le contexte d'un fuseau horaire commeEurope/Paris
ouAmerica/Montreal
, juste en disant “quelques minutes après minuit” n'a pas de sens.ZoneId
Un fuseau horaire est représenté par la
ZoneId
classe.Spécifier un fuseau horaire nom dans le format de
continent/region
, commeAmerica/Montreal
,Africa/Casablanca
, ouPacific/Auckland
. Ne jamais utiliser de l'3-4 abréviation commeEST
ouIST
comme ils sont pas vrai fuseaux horaires, pas normalisée, et même pas unique(!).ZonedDateTime
Appliquer la
ZoneId
pour obtenir unZonedDateTime
qui est en fait un point sur la ligne de temps, un moment précis dans l'histoire.Instant
D'abord, sachez qu'une
Z
caractère littéral est court pourZulu
et les moyens UTC. En d'autres termes, un offset-de-UTC de zéro heures,+00:00
.La
Instantané
classe représente un moment dans le scénario de UTC avec une résolution de nanosecondes (jusqu'à neuf (9) chiffres d'une fraction décimale).Vous pouvez extraire une
Instant
objet à partir d'uneZonedDateTime
.Pour générer une chaîne de caractères en standard ISO 8601 format, comme
2017-01-22T18:21:13.354Z
, appeltoString
. Le format standard a pas d'espaces, utilise unT
de séparer la forme année-mois-jour à partir de l'heure-minute-seconde, et ajoute leZ
canoniquement pour un décalage de zéro.Je suggère fortement à l'aide de formats standard chaque fois que possible. Si vous insistez sur l'utilisation des espaces comme dans votre format de votre choix, soit définir votre propre mise en forme de motif dans un
DateTimeFormatter
objet ou tout simplement faire une manipulation de chaîne sur la sortie deInstantanée::toString
.Essayer cette code de vivre à IdeOne.com.
Sur java.temps
La java.le temps cadre est intégré dans Java 8 et les versions ultérieures. Ces classes permettent d'éviter la pénible vieux héritage date du temps des classes comme
java.util.Date
,Agenda
, &SimpleDateFormat
.La Joda-Time projet, maintenant dans le mode de maintenance, conseille la migration vers le java.le temps classes.
Pour en savoir plus, consultez les Oracle Tutoriel. Et de recherche de Débordement de Pile pour de nombreux exemples et des explications. La spécification est JSR 310.
Où obtenir le java.les classes de temps?
La ThreeTen-Extra projet s'étend java.temps avec d'autres classes. Ce projet est un terrain d'essai pour de possibles futurs ajouts à java.temps. Vous pouvez trouver quelques classes utiles ici comme
Intervalle
,YearWeek
,YearQuarter
, et plus.OriginalL'auteur Basil Bourque
Utilisation SimpleDateFormat
-1: cela permettra de jeter ParseException sur la plupart des fuseaux horaires.
Konietzka @shal je me dépêche j'ai manqué, mise à jour de la réponse
maintenant, vous
copied
ma solution.Konietzka Vous êtes à votre place, mais ce n'est pas le cas
OriginalL'auteur Jigar Joshi
Créer une nouvelle instance de SimpleDateFormat à l'aide de votre modèle de date. Ensuite, vous pouvez appeler la méthode d'analyse pour convertir les dates des chaînes à une java.util.Date objet.
OriginalL'auteur Robert
Sans aucun doute, le format qui est généralement utilisées doivent être de forme
2014-10-05T15:23:01Z
(TZ)Pour cela que l'on a à utiliser ce code
Sa sortie sera Sun Oct 05 à 20:53:01 IST 2014
Cependant, je ne suis pas sûr pourquoi, nous avons dû replaceAll "Z" si vous n'ajoutez pas replaceAll à l'échec.
OriginalL'auteur Somum