Je ne suis pas directement familier avec l'API de FourSquare, donc je ne peux pas confirmer ou infirmer cela pour vous. Mais je peux vous dire qu'il y a souvent des cas où vous utiliseriez les deux.
Il est autorisé de ne présenter un décalage que si les données représentent un moment particulier. Étant donné que la réponse checkin fournit une date/heure createdAt
sous la forme d'un nombre entier de secondes depuis epoch (alias «horodatage Unix»), il convient alors de fournir un décalage distinct. (Bien que je trouve intéressant qu'ils fournissent l'offset comme une chaîne et non comme un nombre entier de minutes.) L'autre manière que vous pourriez faire ceci serait avec un seul DateTimeOffset
valeurs, habituellement présentées dans le format ISO8601, comme dans 2013-06-02T01:23:45-07:00
. Les deux sont acceptables. Mais, comme vous le savez peut-être, un décalage n'identifie pas uniquement un fuseau horaire. Dans le cas d'un événement unique, ce n'est pas nécessaire. Mais si c'était événement récurrent, ou s'il y avait une possibilité que vous voulez modifier la valeur de temps, alors un décalage seul ne suffirait pas. C'est quand vous avez besoin de l'identifiant complet de la zone.
Si vous disposez d'un identificateur de zone tel que America/New_York
, vous pouvez toujours rechercher le décalage correct pour une date/heure quelconque. Mais tout le monde n'a pas une implémentation TZDB facilement disponible. Par exemple, dans .Net sous Windows, vous obtenez par défaut la base de données de fuseaux horaires maladroite de Microsoft, et vous devez trouver une bibliothèque (comme NodaTime) si vous voulez utiliser les zones TZDB.
Il semble étrange que le push et pull pour le même type d'action (un check-in) aurait des valeurs différentes simplement parce qu'ils traversaient différentes API. Mon conseil (à Foursquare) serait triple:
- Soyez cohérent sur les données de la même activité, quel que soit poussée vs traction.
- Indiquez à la fois l'identificateur TZDB et le décalage UTC associé à l'événement.
- Indiquez l'horodatage et le décalage de l'événement en une seule valeur, sous la forme d'une chaîne au format ISO8601, plutôt que d'un entier de temps unix.