Comment calculer le nombre de jours entre deux dates sans tenir compte d’un décalage saisonnier?
Comment calculer le nombre de jours entre deux dates sans tenir compte d’un décalage saisonnier?
Description du Problème :
J’aimerais calculer le nombre de jours écoulés entre deux dates, sans tenir compte du décalage que pourraient causer les changements entre heure d’hiver et heure d’été. Quelle serait la méthode la plus appropriée ?
Solution:
La méthode suivante figure dans la bibliothèque de fonctions sur les dates pour les scripts Groovy :
Cette fonction permet d’obtenir le nombre de jours entre deux dates en ignorant le décalage de l’heure d’été/hiver (on se base sur les heures affichées dans l’éditeur de préparation, donc sur la timezone du serveur et on les traite comme si c’était du temps universel - UTC ou du temps local, sans timezone… comme on calcule une différence, cela ne change rien).
Exemple :
La différence en jours entre 2024-03-2419:00:00 et 2024-04-0319:00:00 (affichés comme tels dans l’éditeur de préparation) est de 10.0 car les dates sont réanalysées à partir de leur forme textuelle, sans timezone (= date locale), le passage à l’heure d’été entre les deux dates est donc ignoré.
Note
Avec la méthode getIntervalInDays(Datedate1,Datedate2) on obtiendrait un résultat de 9.95833 pour les mêmes dates d’entrée.
Avertissement
Si une des deux dates tombe exactement dans l’intervalle de changement d’heure, le comportement est indéterminé. Par exemple le 31 mars 2024 à 2 heure 30 du matin est une heure qui n’existe pas dans la locale du serveur. La probabilité est faible, mais il vaut mieux le savoir.
Comment calculer le nombre de jours entre deux dates sans tenir compte d’un décalage saisonnier?
Description du Problème :
J’aimerais calculer le nombre de jours écoulés entre deux dates, sans tenir compte du décalage que pourraient causer les changements entre heure d’hiver et heure d’été. Quelle serait la méthode la plus appropriée ?
Solution:
La méthode suivante figure dans la bibliothèque de fonctions sur les dates pour les scripts Groovy :
Cette fonction permet d’obtenir le nombre de jours entre deux dates en ignorant le décalage de l’heure d’été/hiver (on se base sur les heures affichées dans l’éditeur de préparation, donc sur la timezone du serveur et on les traite comme si c’était du temps universel - UTC ou du temps local, sans timezone… comme on calcule une différence, cela ne change rien).
Exemple :
La différence en jours entre
2024-03-24 19:00:00
et2024-04-03 19:00:00
(affichés comme tels dans l’éditeur de préparation) est de 10.0 car les dates sont réanalysées à partir de leur forme textuelle, sans timezone (= date locale), le passage à l’heure d’été entre les deux dates est donc ignoré.Note
Avec la méthode
getIntervalInDays(Date date1, Date date2)
on obtiendrait un résultat de9.95833
pour les mêmes dates d’entrée.Avertissement
Si une des deux dates tombe exactement dans l’intervalle de changement d’heure, le comportement est indéterminé. Par exemple le 31 mars 2024 à 2 heure 30 du matin est une heure qui n’existe pas dans la locale du serveur. La probabilité est faible, mais il vaut mieux le savoir.