Le Answer by Jon Skeet est correct mais maintenant obsolète avec l'arrivée du code java.time dans Java 8 et versions ultérieures.
java.time
La classe Instant
représente un moment sur la ligne de temps en UTC avec une résolution de nanoseconds (jusqu'à neuf (9) chiffres d'une fraction décimale).
Obtenir le moment actuel en UTC.
Instant instant = Instant.now();
Ajustez dans un fuseau horaire.
Spécifiez un proper time zone name dans le format de continent/region
, tels que America/Montreal
, Africa/Casablanca
ou Pacific/Auckland
. N'utilisez jamais l'abréviation de 3 à 4 lettres telle que EST
ou IST
car elles sont et non fuseaux horaires, non normalisés, et même pas uniques (!).
ZoneId z = ZoneId.of("America/Los_Angeles");
ZonedDateTime zdt = instant.atZone(z);
Pour générer une chaîne en format standard ISO 8601, appelez le toString
. Pour un formatage alternatif, utilisez la classe DateTimeFormatter
déjà couverte dans de nombreuses autres questions et réponses.
String output = zdt.format(myDateTimeFormatter);
Voir le même moment India time, en particulier Asia/Kolkata
.
ZoneId zKolkata = ZoneId.of("Asia/Kolkata");
ZonedDateTime zdtKolkata = zdt.withZoneSameInstant(zKolkata);
Je ne sais pas si par IST
que vous vouliez dire l'Inde heure normale ou heure normale d'Irlande. Couvrons Europe/Dublin
ainsi. Cette zone utilise actuellement un décalage de zéro, +00:00
. Donc, c'est wall-clock time dans le même que UTC.
ZoneId zDublin = ZoneId.of("Europe/Dublin");
ZonedDateTime zdtDublin = zdt.withZoneSameInstant(zDublin);
Voir ceci .
instant.toString(): 2017-02-13T07: 28: 57.738Z
zdt.toString(): 2017-02-12T23: 28: 57.738-08: 00 [Amérique/Los_Angeles]
zdtKolkata.toString(): 2017-02-13T12: 58: 57,738 + 05: 30 [Asie/Calcutta]
zdtDublin.toString(): 2017- 02-13T07: 28: 57.738Z [Europe/Dublin]
A propos java.time
Le cadre java.time est construit en Java 8 et versions ultérieures. Ces classes supplantent les vieilles classes de date-heure legacy gênantes telles que java.util.Date
, Calendar
, & SimpleDateFormat
. Le projet Joda-Time, maintenant en maintenance mode, conseille la migration vers les classes java.time.
Pour en savoir plus, voir le Oracle Tutorial. Et recherchez Stack Overflow pour de nombreux exemples et explications. La spécification est JSR 310.
Où obtenir les classes java.time?
- Java SE 8 et SE 9 et plus tard
- intégré.
- Partie de l'API Java standard avec une implémentation groupée.
- Java 9 ajoute quelques fonctionnalités et corrections mineures.
- Java SE 6 et SE 7
- Une grande partie de la fonctionnalité de java.time est de retour à Java 6 Ported .
- Android
Le projet ThreeTen-Extra java.time étend avec des classes supplémentaires. Ce projet est un terrain d'essai pour d'éventuels ajouts futurs à java.time. Vous pouvez trouver ici des classes utiles telles que Interval
, YearWeek
, YearQuarter
et more.
Ça a marché ... merci .. – Warrior