java 8 temps, api - Instantanée.maintenant (horloge) vs LocaldateTime.maintenant(horloge)


Pour le code suivant pour java 8

  1. System.out.println(LocalDateTime.now(Clock.systemDefaultZone())); 
  2. System.out.println(Instant.now(Clock.systemDefaultZone()));

La ligne 1 imprime l'heure actuelle en ajoutant un décalage, mais la ligne 2 imprime l'heure actuelle sans ajouter de décalage.

J'ai vérifié le code source des deux et j'ai constaté que LocaDateTime.now(clock) return clock.instant() return time en ajoutant offset mais Instant.now(clock) ne le faisait pas.

Pourquoi il a conçu comme ça? Ne nous attendons-nous pas le même résultat dans les deux cas?

Author: Ole V.V., 2015-06-27

1 answers

MISE À JOUR: Instant n'a rien à voir avec UTC dans le sens du fuseau horaire. Il est lié à UTC en tant que norme horaire uniquement.

La différence majeure est le type de retour. Ils ont des représentations de chaînes différentes car les types eux-mêmes ont des significations très différentes.

Instantané#maintenant(Horloge) retourne Éphémère. Un Instant est "[a]n point instantané sur la ligne de temps".

LocalDate#maintenant(Horloge) retourne LocalDate. Un LocalTime est "une description de l'heure locale telle que vue sur une horloge murale".

Comme un résultat Éphémère#maintenant(Horloge) et LocalDate#maintenant(Horloge) signifier des choses très différentes et naturellement à des résultats différents. La principale chose qu'ils ont en commun est un nom. Les noms de méthode sont de la poussière. Reportez-vous aux types.

Sur une horloge fixe , les deux Instantanés.maintenant(horloge) et LocalDate.now (clock){[2] } renverra une constante valeur. Le point d'accepter Clock en tant que paramètre est de pouvoir contrôler des choses comme l'heure de référence ou la résolution de l'horloge.

 7
Author: Alain O'Dea, 2015-06-28 02:05:16