En résumé
Instant.parse( "2011-09-28T21:48:25Z" )
ISO 8601
Votre chaîne d'entrée est en standard ISO 8601 format.
Jersey n'est pas pertinent, sauf que ses concepteurs ont judicieusement choisi d'utiliser les formats ISO 8601 pour sérialiser les valeurs de date et d'heure sous forme de chaînes de caractères.
java.time
Les classes java.time intégrées à Java utilisent par défaut les formats ISO 8601 pour l'analyse et la génération des chaînes de caractères. Il n'est donc pas nécessaire de spécifier un modèle de formatage.
UTC
En Z
à l'extrémité est le diminutif de Zulu
et signifie UTC (GMT).
Instant
En Instant
représente un moment sur la ligne de temps dans UTC avec une résolution de nanosecondes .
Instant instant = Instant.parse( "2011-09-28T21:48:25Z" );
Fuseau horaire
Ajuster que Instant
dans le fuseau horaire de votre choix.
Indiquez un nom du fuseau horaire approprié . N'utilisez jamais l'abréviation de 3-4 lettres telle que EST
o IST
car il ne s'agit pas de véritables fuseaux horaires, ils ne sont pas normalisés et ne sont même pas uniques ( !).
ZoneId z = ZoneId.of( "America/Montreal" ); // Or "Asia/Kolkata" etc.
ZonedDateTime zdt = instant.atZone( z );
Cordes
Ne pas confondre les valeurs de date et d'heure avec les chaînes de caractères qui représentent ces valeurs.
Vous pouvez demander aux objets java.time de générer une chaîne dans le format que vous souhaitez. Mais il est généralement préférable de laisser les objets DateTimeFormatter
localiser automatiquement pour vous.
Locale l = Locale.CANADA_FRENCH; // Or Locale.US, Locale.ITALY, etc.
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.FULL ).withLocale( l );
String output = zdt.format( f );