Vérifier une date importée qui change de jour

Une méthode pour distinguer date métier, instant et rendez-vous local, puis vérifier les conversions avant de corriger vos données.

Agenda hebdomadaire ouvert, sans rendez-vous inscrits, près d’un ordinateur portable et d’une tasse de café.

Contenu de l’article

Quand une date change de jour entre deux logiciels, vérifiez d’abord ce que le champ représente : une date métier, un instant précis ou une heure locale de rendez-vous. Une livraison prévue le 1er novembre doit rester une date si aucune heure n’est promise. Un événement survenu à minuit UTC (temps universel coordonné) peut, lui, s’afficher légitimement la veille au Québec. Ajouter un jour à toutes les données masquerait cette différence.

La méthode ci-dessous permet de retrouver la première transformation incorrecte, de définir une règle par champ et de la vérifier avant un nouvel import. Elle s’applique aussi aux échanges par API entre un CRM, un ERP et un outil de planification.

Retrouver où la valeur change

Les symptômes possibles sont une livraison déplacée à la veille, un rendez-vous décalé d’une heure à certaines périodes ou deux exports qui montrent des jours différents. Ce ne sont pas des preuves suffisantes pour accuser le fuseau horaire. Consultez la valeur source et les journaux d’import ou d’intégration avant de conclure.

  1. Prenez un enregistrement fictif ou autorisé, identifiable sans exposer de données personnelles.
  2. Relevez la chaîne exacte dans le fichier ou le message API, la valeur stockée après traitement, puis celle affichée et réexportée.
  3. Notez le type du champ, le format d’entrée, le fuseau configuré à chaque étape et la règle appliquée. Un affichage « 1 novembre » ne révèle pas à lui seul la valeur stockée.
  4. Repérez la première étape où le sens change : lecture du format, conversion, stockage ou affichage.

Il faut l’accès autorisé à ces éléments, une copie d’essai, une sauvegarde récupérable avant toute correction et une personne capable de confirmer le sens métier du champ. Le coût vient surtout de l’analyse du connecteur, du mappage et des essais; certaines plateformes peuvent aussi exiger une option ou un accès technique payant. Aucun nouvel abonnement n’a été nécessaire pour notre démonstration locale.

Nommer les trois types de valeurs

  • Date métier : une journée du calendrier, par exemple 2026-11-01 pour une livraison sans heure. Elle n’a pas à devenir artificiellement minuit UTC.
  • Instant : un point précis sur la ligne du temps, par exemple la réception d’une commande. Il peut être affiché dans plusieurs fuseaux sans changer l’événement.
  • Rendez-vous local : une date et une heure voulues dans un lieu, par exemple le 2 novembre 2026 à 9 h dans la zone America/Toronto. Il faut conserver cette intention pour calculer l’instant correspondant.

Cette distinction se retrouve dans les outils de développement : Python sépare notamment le type date des objets datetime avec ou sans information de zone. Source : documentation officielle de datetime. Le nom « date » dans votre CRM ne garantit toutefois pas son type technique : vérifiez le contrat réel du champ.

Écrire un contrat de transfert par champ

Pour chaque champ, consignez son sens, le format accepté, la zone pertinente, la règle d’affichage et le traitement des valeurs incomplètes. Faites approuver les exemples par la personne responsable des opérations.

  • Pour une date métier, convenez d’un format sans ambiguïté comme AAAA-MM-JJ, sans heure ajoutée, et d’un stockage qui conserve ce sens.
  • Pour un instant, exigez une heure accompagnée de Z ou d’un décalage numérique explicite. N’ajoutez pas simplement un Z à une heure locale : vous lui attribueriez un autre sens.
  • Pour un rendez-vous, conservez la date et l’heure locales avec l’identifiant de zone. Définissez aussi quoi faire si cette heure est répétée ou inexistante.

Le format RFC 3339 exprime un horodatage avec un décalage, par exemple 2026-11-02T14:00:00Z. Ce décalage ne remplace pas une zone et ses règles saisonnières. Voir RFC 3339, sections 4 et 5. Pour des rendez-vous futurs ou récurrents, décidez explicitement si l’heure locale ou l’instant doit rester fixe; ne réduisez pas cette décision au fuseau du serveur.

Traiter les heures répétées et inexistantes

Dans les cas Toronto de 2026 testés ci-dessous, le 1er novembre à 1 h 30 correspond à deux instants : 5 h 30 UTC avec le décalage −04:00, ou 6 h 30 UTC avec −05:00. Le 8 mars à 2 h 30 ne correspond à aucun instant local valide. Une valeur sans décision explicite ne doit donc pas être corrigée silencieusement.

Pour l’heure répétée, faites confirmer l’occurrence voulue. Pour l’heure inexistante, faites choisir une nouvelle heure par la personne habilitée. Python documente ces cas et le paramètre fold; ses constructeurs ne rejettent pas automatiquement toutes les heures locales invalides. Source : PEP 495 sur la désambiguïsation des heures locales.

Utilisez les règles de la zone concernée, pas un décalage fixe appliqué toute l’année. La base IANA des fuseaux horaires évolue; relevez la version réellement utilisée par vos logiciels. Les cas Toronto ne prouvent rien sur une autre zone ni sur toutes les dates historiques.

Exemple : séparer la livraison et la prise de rendez-vous

Exemple illustratif, sans client réel : une PME de distribution transfère vers son outil de planification une date de livraison 2026-11-01. Le connecteur lui ajoute minuit UTC. Affichée à Toronto, cette valeur devient le 31 octobre à 20 h. La conversion de l’instant est cohérente; c’est la création de cet instant à partir d’une simple date qui a changé le sens.

La correction proposée consiste à conserver le champ « journée de livraison » comme date métier et à créer un champ distinct lorsqu’une heure est réellement convenue. Un rendez-vous confirmé le 2 novembre à 9 h dans America/Toronto correspond, dans notre test, à 14 h UTC. L’export doit permettre de retrouver la date et l’heure convenues, pas seulement afficher une valeur qui semble plausible.

Si le logiciel cible impose un horodatage pour une date métier, faites documenter une convention compatible de bout en bout avant de continuer. Un midi artificiel ou un ajout systématique de 24 heures ne constitue pas une correction générale. Notre guide d’intégration ERP/CRM complète cette étape pour les responsabilités et les reprises entre systèmes.

Vérifier avec des résultats attendus explicites

Le 2 novembre 2026, nous avons exécuté huit assertions sur des données fictives avec Python 3.12.14 et la base système 2026e. Toutes ont réussi, y compris les cas qui devaient rester à clarifier. Le module zoneinfo utilise ici les données du système. Les règles Toronto ont aussi été relues dans la source IANA 2026f, mais l’exécution rapportée reste celle de 2026e.

Cas fictifRésultat vérifié
Date métier : 1er novembre1er novembre conservé, sans conversion.
Minuit UTC ajouté à cette date31 octobre, 20 h à Toronto : contre-exemple volontaire.
Instant réel : 1er novembre, 0 h 30 UTC31 octobre, 20 h 30 à Toronto : conversion attendue.
Champ déclaré instant, mais sans décalageÀ clarifier; aucun instant accepté.
2 novembre, 9 h à Toronto2 novembre, 14 h UTC.
1er novembre, 1 h 30 à TorontoDeux possibilités : 5 h 30 ou 6 h 30 UTC.
8 mars, 2 h 30 à TorontoAucune possibilité; heure à corriger.
1er novembre, 1 h 30, occurrence −05:00 confirmée6 h 30 UTC retenu.

Ce test vérifie un modèle de conversion, pas votre CRM, votre import ni votre calendrier. Reproduisez ces contrôles dans une copie autorisée, puis comparez stockage, écran et réexport. Ajoutez vos propres zones, formats et règles de récurrence. Notre exercice n’a modifié aucun rendez-vous et n’a envoyé aucune notification.

Corriger seulement les enregistrements démontrés incorrects

Après validation, délimitez le lot touché avec des identifiants stables, conservez les valeurs avant/après et prévoyez une restauration. Ne réimportez pas aveuglément un fichier déjà traité. Vérifiez les rappels, exports et automatisations qui consomment les dates : une correction de données peut déclencher une action. Évitez les destinataires réels pendant les essais et faites autoriser la correction de production.

Pour les valeurs historiques dont le fuseau ou le sens a été perdu, le logiciel ne peut pas inventer la bonne réponse. Conservez-les à clarifier jusqu’à obtenir une preuve métier. La recette utilisateur doit valider le rendez-vous ou la livraison attendu, pas seulement une cellule bien formatée.

Checklist avant de relancer l’échange

  • Chaque champ a un sens et un format documentés.
  • Les dates métier restent des dates, sans heure artificielle.
  • Les instants et les rendez-vous ont les informations de zone nécessaires.
  • Les cas ambigus ou inexistants sont signalés, sans choix silencieux.
  • Stockage, affichage et réexport donnent les résultats attendus.
  • Le lot à corriger, les notifications et le retour arrière sont maîtrisés.

Pour fiabiliser ces règles entre votre CRM, votre ERP et vos outils de planification, notre offre d’applications sur mesure et d’intégrations au Québec et au Canada peut partir de vos champs et de vos cas d’essai.

Découvrez plus d’articles

Discutons de votre projet.

Expliquez-nous ce que vous souhaitez améliorer. Nous vous aiderons à choisir les prochaines étapes.

Démarrer la discussion