Pour compter les jours civils entre les dates de publication, comparez leurs dates de calendrier plutôt que de diviser les heures écoulées par 24. Sur un Mac, Numbers gère les entrées de date seule ; les horodatages doivent d'abord être interprétés dans un fuseau horaire choisi.

Ce guide utilise des dates de publication synthétiques et le calendrier grégorien. La tâche consiste à répondre à la question « Combien de jours de calendrier séparent ces deux publications ? » Le comptage par défaut est une différence signée : la même date donne zéro, et la date suivante donne un.

Quel type d'information de date avez-vous ?

Choisissez votre type d'entrée avant de calculer. Une date imprimée sur une publication et un horodatage enregistrant son instant de publication nécessitent des préparations différentes.

Entrée Signification Préparation
2025-03-09 Une date civile : année, mois et jour Comparez directement avec une autre date civile grégorienne
2025-03-09T05:00:00Z Un horodatage identifiant un instant Convertissez en date dans votre zone de rapport choisie
-05:00 Un décalage UTC Décrit la différence d'heure locale par rapport à UTC à un instant
America/New_York Un fuseau horaire nommé Fournit les règles nécessaires pour interpréter les dates locales et les changements de décalage

Un décalage et une zone nommée portent des informations différentes. Le décalage attaché à un horodatage ne décrit pas le décalage à une autre date. Une zone nommée fournit les règles pour cette relation, y compris les changements d'heure d'été. Cette distinction est explicite dans la RFC 9557, « Date and Time on the Internet: Timestamps with Additional Information ».

Pour un tableau de dates de publication, établissez cette règle : conservez les dates déjà fournies comme dates civiles ; dérivez les dates des horodatages en utilisant une zone de rapport explicitement choisie. N'attachez pas un minuit et un décalage arbitraires à une valeur de date seule juste pour effectuer une soustraction.

Les normes de calendrier distinguent également les dates des date-heures. La norme iCalendar définit une valeur DATE distincte contenant des composants de calendrier. Sa forme sérialisée utilise des chiffres sans séparateurs ; les dates avec tirets dans ce guide sont pour la lisibilité. Voir RFC 5545, section 3.3.4.

Pourquoi la division des secondes écoulées par 86 400 échoue-t-elle ?

Une différence de dates civiles mesure la progression dans le calendrier. Une différence de temps écoulé mesure l'intervalle entre deux instants. Lors d'une transition d'heure d'été, ces quantités n'ont pas nécessairement une correspondance de 24 heures par incrément de date. La RFC 5545 note explicitement qu'une récurrence nominale d'un jour peut durer plus ou moins de 24 heures lorsqu'un changement de zone se produit. Voir sa discussion sur la récurrence.

Considérez deux paires de publications synthétiques dans America/New_York. Les calculs suivants utilisent le minuit local à chaque extrémité. Les décalages suivent la zone de New York et les règles de transition dans la base de données des fuseaux horaires de l'IANA.

Intervalle de publication synthétique Décalage de début Décalage de fin Heures écoulées Différence de dates civiles
9–10 mars 2025 -05:00 -04:00 23 1
2–3 novembre 2025 -04:00 -05:00 25 1

Pour la paire de mars, les instants UTC correspondants sont 2025-03-09T05:00:00Z et 2025-03-10T04:00:00Z : 23 heures d'écart. Diviser cet intervalle par 24 donne environ 0.9583. Pour la paire de novembre, le calcul équivalent donne environ 1.0417. Aucun des deux décimaux ne répond à la question du calendrier.

L'arrondi peut masquer l'erreur dans ces exemples, mais il n'établit pas une règle de comptage fiable. Deux publications à 23 h 55 et 00 h 05 sur des dates consécutives ne sont séparées que de dix minutes et ont pourtant une différence de date civile d'un. Extrayez d'abord les dates, puis calculez leur différence.

Comment compter les dates de publication dans Numbers ?

Utilisez cette méthode lorsque vous avez déjà les dates de publication prévues. Apple documente DAYS(end-date, start-date) comme renvoyant le nombre de jours entre ses arguments, y compris un résultat négatif lorsque la fin précède le début. Voir la référence Numbers DAYS.

Ouvrez un tableau Numbers avec un tableau vide. Utilisez la ligne 1 pour les étiquettes descriptives, puis entrez les formules suivantes individuellement dans la ligne 2. Pour entrer une formule, sélectionnez sa cellule, tapez le = initial, complétez l'expression et appuyez sur Return. Ce sont les étapes de saisie de formule pour Numbers sur Mac documentées par Apple.

Cellule Étiquette de colonne suggérée Formule à entrer Valeur attendue
A2 Date de publication antérieure =DATE(2025,3,9) 9 mars 2025
B2 Date de publication ultérieure =DATE(2025,3,10) 10 mars 2025
C2 Jours civils d'écart =DAYS(B2,A2) 1

L'utilisation de DATE construit les entrées à partir de l'année, du mois et du jour au lieu de dépendre de l'interprétation d'une chaîne de texte ambiguë. Apple recommande cette fonction pour une interprétation cohérente des dates selon les paramètres de format de date dans sa liste des fonctions de date et d'heure.

Répétez la vérification à la ligne 3 avec =DATE(2025,11,2) dans A3, =DATE(2025,11,3) dans B3, et =DAYS(B3,A3) dans C3. La réponse est à nouveau 1. Vous comparez les dates de calendrier fournies, il n'y a donc aucun ajustement d'heures écoulées à faire.

Pour un calcul rapide sans cellules auxiliaires, entrez =DAYS(DATE(2025,3,10),DATE(2025,3,9)) dans une cellule vide. La version à colonnes séparées est plus facile à inspecter et à réutiliser pour plusieurs paires de publications.

Voulez-vous l'écart ou un comptage de dates inclusif ?

La différence standard exclut la date de départ en tant qu'unité comptée. Du 9 mars au 10 mars, il y a un jour d'écart. Si votre tâche demande plutôt combien d'étiquettes de date sont incluses du 9 mars au 10 mars, la réponse est deux.

Pour une plage inclusive dont la fin est le même jour ou après son début, utilisez =DAYS(B2,A2)+1. Vérifiez l'ordre avant d'appliquer cette formule. Une différence négative est une preuve utile que les entrées sont inversées ; prendre une valeur absolue automatiquement supprimerait cette information.

La même distinction s'applique à une plage d'une seule date. Sa différence de date est zéro, alors qu'un comptage inclusif contient une date. Décidez quel résultat votre tableau nécessite et nommez la colonne de résultat en conséquence.

Et si vos entrées sont des horodatages ?

Un horodatage doit être converti dans la zone de rapport avant de supprimer son heure. Par exemple, 2025-03-10T00:30:00Z correspond au 9 mars à 20 h 30 dans America/New_York, en utilisant le décalage -04:00 de cette date. Copier les dix premiers caractères de l'horodatage sélectionnerait la date UTC au lieu de la date de publication de New York.

La signature documentée de DAYS dans Numbers accepte deux arguments de date ; elle n'a pas d'argument de zone nommée. Utilisez-la après que les dates prévues ont été établies. Pour un calcul d'horodatage reproductible sur Mac, Foundation fournit les API de calendrier nécessaires.

Malgré son nom, Date de Foundation représente un instant indépendant d'un calendrier ou d'un fuseau horaire. Apple dirige l'arithmétique de calendrier via Calendar. Voir la documentation officielle de Date.

Pour les transitions d'heure d'été ordinaires, la séquence Foundation est : sélectionnez le calendrier grégorien et la zone de rapport, trouvez le début du jour local de chaque extrémité, puis demandez la différence en utilisant uniquement le composant jour. Apple documente à la fois startOfDay(for:) et dateComponents(_:from:to:).

Exécuter un exemple Foundation complet dans Terminal

Cette méthode optionnelle nécessite une chaîne d'outils Swift installée. Ouvrez Terminal et exécutez swift --version pour vérifier, comme décrit dans le guide de démarrage de Swift. Si nécessaire, Apple documente l'installation de ses outils en ligne de commande avec xcode-select --install ; terminez la boîte de dialogue d'installation avant de continuer. Voir Installation des outils en ligne de commande.

Collez le bloc entier ci-dessous dans Terminal. Il contient un programme complet et des données d'entrée synthétiques. Il analyse les horodatages avec décalages explicites et sans secondes fractionnaires. Apple documente .withInternetDateTime pour ce format d'horodatage dans la référence des options de ISO8601DateFormatter.

swift - <<'SWIFT'
import Foundation

let zoneID = "America/New_York"
guard let zone = TimeZone(identifier: zoneID) else {
    fatalError("Unknown reporting zone: \(zoneID)")
}

var calendar = Calendar(identifier: .gregorian)
calendar.timeZone = zone

let parser = ISO8601DateFormatter()
parser.formatOptions = [.withInternetDateTime]

let samples = [
    ("Spring", "2025-03-09T00:00:00-05:00",
               "2025-03-10T00:00:00-04:00"),
    ("Autumn", "2025-11-02T00:00:00-04:00",
               "2025-11-03T00:00:00-05:00")
]

for (label, startText, endText) in samples {
    guard let start = parser.date(from: startText),
          let end = parser.date(from: endText) else {
        fatalError("Could not parse timestamps for \(label)")
    }

    let startDay = calendar.startOfDay(for: start)
    let endDay = calendar.startOfDay(for: end)
    guard let days = calendar.dateComponents(
        [.day], from: startDay, to: endDay
    ).day else {
        fatalError("Could not calculate civil days for \(label)")
    }

    let hours = end.timeIntervalSince(start) / 3600
    print("\(label): \(days) civil day(s), \(hours) elapsed hours")
}
SWIFT

La sortie attendue suit. Les exemples numériques ont été vérifiés indépendamment avec l'arithmétique des dates ; le programme Swift a été inspecté mais n'a pas été exécuté sur macOS ici.

Printemps: 1 jour(s) civil(s), 23,0 heures écoulées
Automne: 1 jour(s) civil(s), 25,0 heures écoulées

Pour adapter le programme, remplacez les chaînes d'horodatage et choisissez la zone de rapport délibérément. Les décalages des horodatages identifient leurs instants ; la zone du calendrier détermine quelles dates locales ces instants occupent. Le programme s'arrête si son analyseur signale un échec, au lieu de substituer la date actuelle ou d'ignorer un enregistrement.

L'exemple accepte le format avec décalage indiqué. Les secondes fractionnaires nécessitent des options d'analyseur différentes. Il n'implémente pas non plus les annotations de zone entre crochets de la RFC 9557 : fournissez la zone nommée séparément, comme indiqué, au lieu de supposer que ces annotations sont prises en charge par cette configuration d'analyseur.

Que vérifier lorsque le résultat semble incorrect ?

Utilisez ces vérifications dans l'ordre ; chacune traite une source différente de divergence.

  1. Confirmez le comptage demandé. Une différence de dates et un comptage de dates inclusif diffèrent de un pour une plage ascendante.
  2. Confirmez les entrées. Utilisez les valeurs réelles d'année, de mois et de jour pour les publications de date seule. Ne supposez pas que les horodatages importés représentent déjà les dates locales prévues.
  3. Confirmez la zone de rapport. Convertissez les deux instants en utilisant la même zone choisie avant d'extraire les dates.
  4. Confirmez l'opération. Comptez les jours de calendrier après avoir supprimé l'influence de l'heure de la journée. Diviser un intervalle d'instants par 86,400 répond à une question de durée écoulée.
  5. Confirmez la direction. Conservez un résultat négatif jusqu'à ce que vous déterminiez si les entrées antérieure et ultérieure ont été inversées.

Pour le code de calendrier, utilisez l'API de début de jour au lieu de supposer que chaque jour local commence à un minuit unique. Apple documente que startOfDay(for:) sélectionne le premier minuit lorsqu'il y en a deux, ou le premier moment qui existe lorsque minuit est absent. Cela gère une condition limite que la mise manuelle de l'heure à zéro peut négliger. Voir startOfDay(for:).

L'exemple Foundation traite les changements d'heure d'été ordinaires. Pour les changements historiques qui sautent une date locale entière, précisez d'abord si la tâche compte les étiquettes de dates grégoriennes ou les jours locaux qui ont réellement existé ; ce sont des exigences différentes. Conservez les entrées de date seule comme étiquettes de calendrier lorsque le premier cas est visé.

Pour un tableau de dates de publication, gardez le calcul final simple : établissez les deux dates grégoriennes prévues, conservez leur ordre, et utilisez DAYS pour trouver l'écart. Lorsque les entrées sont des instants, rendez la zone de rapport explicite avant de calculer. Cela maintient le résultat lié aux dates de publication même lorsque l'horloge change entre elles.

Sources