Définition de "Midnight" (minuit)
Le mot "minuit" est délicat à définir.
Certains pensent que c'est le moment avant un nouveau jour commence. Essayer de représenter cela dans un logiciel est aussi délicat que le dernier moment de la journée peut toujours être subdivisé en une plus petite fraction de seconde.
Je suggère qu'une meilleure façon de penser à cela est d'obtenir le "premier moment de la journée".
Cela va dans le sens de l'approche couramment utilisée qui consiste à définir une période de temps comme étant "semi-ouverte", où le début est inclusif et la fin est exclusive. Ainsi, une journée complète commence au premier moment de la journée et s'étend jusqu'au premier moment de la journée suivante, mais sans l'inclure. suivant jour. Une journée complète ressemblerait à ceci (remarquez que la date passe du 3 au 4) :
2016-02-03T00:00:00.0-08:00[America/Los_Angeles]/2016-02-04T00:00:00.0-08:00[America/Los_Angeles]
Joda-Time
Si vous utilisez le Joda-Time bibliothèque, appeler withTimeAtStartOfDay
.
Notez comment nous spécifions le fuseau horaire. S'il est omis, le fuseau horaire par défaut de la JVM est implicitement appliqué. Il est préférable d'être explicite.
DateTime todayStart = DateTime.now( DateTimeZone.forID( "America/Montreal" ) ).withTimeAtStartOfDay() ;
Si vous utilisez Java 8 ou une version ultérieure, il est préférable d'utiliser le paquet java.time intégré à Java. Voir Réponse de la fratrie par Jens Hoffman.