2016-12-02 1 views
0

Je crée une application qui obtient la date et l'heure locale d'une personne dans un objet Calendar. Je les informations suivantes:Puis-je obtenir la date et l'heure locales dans l'objet Calendrier en utilisant le code d'état, le décalage GMT et les informations d'économie de lumière du jour?

État code décalage GMT sauvegarde de l'information Lumière du jour

Toute aide est vraiment apprécié.

// J'ai les informations GMTOffset disponibles pour me

LocalDateTime gmtToLocal,gmtTime ; 
gmtTime = LocalDateTime.now(ZoneId.of("UTC")); 
gmtToLocal = gmtTime.plusHours(GMTOffset); 
+0

quel est votre problème et où est votre code? –

+0

@ScaryWombat Mise à jour de l'extrait de code. – Priya

Répondre

0

Vous confondez les classes date du temps de l'héritage vieux gênants (Calendar) avec les classes de java.time modernes (LocalDateTime). Ne le faites pas. Restez exclusivement dans les classes java.time.

Un LocalDateTime n'a aucune information de fuseau horaire, c'est son but. Donc, il ne pas représentent un moment sur le calendrier. Et cela ne sert à rien dans le but de votre question.

Vous avez indiqué que vous avez un décalage donné par rapport à l'UTC. Donc, vous voulez un OffsetDateTime avec un ZoneOffset.

Instant instant = Instant.now(); // Current moment in UTC. 
ZoneOffset offset = ZoneOffset.ofHoursMinutes(5 , 30); 
OffsetDateTime odt = OffsetDateTime.atOffset(offset); 

Comme un raccourci, vous pouvez sauter obtenir le Instant.

OffsetDateTime odt = OffsetDateTime.now(offset); 

Les anomalies telles que l'heure d'été ne peuvent pas être gérées par un simple décalage par rapport à l'UTC. Pour cela, vous avez besoin d'un fuseau horaire. Une zone est un décalage plus un ensemble de règles pour gérer ces anomalies, passées et présentes. Utilisez un ZoneId pour obtenir un ZonedDateTime. Rechercher Dépassement de pile pour de nombreuses publications.

Je n'ai aucune idée de ce que signifie "code d'état" dans votre question. Si vous parlez de l'état ou de la province d'un pays, cela correspond à et non pas à de faire correspondre directement à un fuseau horaire dans tous les cas, donc cela ne sert à rien.

Veuillez rechercher et étudier Stack Overflow avant de poster. Ces problèmes ont déjà été couverts à plusieurs reprises.