Google Health API-Datentypen

Die folgende Tabelle enthält die vollständige Liste der Datentypen mit mehreren Spalten, die Ihnen helfen, die Darstellung der einzelnen Typen in der Google Health API sowie den Bereich zu verstehen, in dem sie jeweils verfügbar sind.

Felder für Datentypen

Die Tabelle mit den Google Health API-Datentypen enthält mehrere Spalten, die Ihnen helfen, die Darstellung und die Anforderungen der einzelnen Datentypen zu verstehen. Die Spalten sind:

Tabelle: Beschreibungen der Felder für Google Health API-Datentypen
Feld Beschreibung
dataType Die durch Bindestriche getrennte Kennung (z. B. active-minutes), die in Endpunkt-URLs verwendet wird.
filter-Parameter Die durch Unterstriche getrennte Kennung (z. B. active_minutes), die als Wert für den Filterparameter dataType in täglichen Rollup- und Rollup-Anfragen verwendet wird.
Eintragstyp

Gibt die Struktur und das Format der aufgezeichneten Daten an. Das entspricht der Ressourcenrepräsentation der Datenpunkte. Die möglichen Werte sind:

  • Interval (Steht für Messungen, die über einen bestimmten Zeitraum aufgezeichnet wurden.)
  • Sample (Steht für sofortige Messungen.)
  • Daily (Steht für Messungen, die täglich zusammengefasst oder aufgezeichnet werden.)
  • Session: Stellt einen kontinuierlichen Aufzeichnungsblock dar, z. B. ein Training oder eine EKG-Sitzung.
  • Food (Stellt einen Lebensmittelartikel oder eine ernährungsbezogene Dateneinheit dar.)
Verfügbare Vorgänge Hier werden die für den Datentyp unterstützten API-Methoden aufgeführt, z. B. list, create und rollUp.
Einsatzbereich Die erforderlichen OAuth-Bereiche für den Zugriff auf den Datentyp.
Webhook-Unterstützung Gibt an, dass der Datentyp Echtzeitbenachrichtigungen über Webhooks unterstützt, wenn neue Daten synchronisiert werden.
Unterstützung für echte Nullen Gibt an, dass der Datentyp die Aufzeichnung expliziter Nullwerte unterstützt, um zwischen einem aktiven Nullwert (z. B. null Aktivzonenminuten) und fehlenden oder nicht aufgezeichneten Daten zu unterscheiden.
Speicherauflösung Das minimale Aufzeichnungs- oder Stichprobenintervall, in dem Datenpunkte gespeichert werden (z. B. 1 Minute für steps). Bei Zusammenfassungen entspricht dies dem empfohlenen Mindestwert für windowSize, um eine gleichmäßig verteilte Aggregation ohne Artefakte von Daten aus Unterintervallen zu gewährleisten.
Kompatible Geräte Eine aufklappbare Liste der physischen Geräte, die diesen Datentyp aufzeichnen und mit der Google Health API synchronisieren können (über die Fitbit App).

Tabelle: Google Health API-Datentypen
Datentyp Verfügbare
Vorgänge
Bereich
Verbrannte aktive Kalorien
dataType:active-energy-burned
filter parameter:active_energy_burned
Eintragstyp : Intervall
Speicherauflösung : 1 Minute
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Aktive Minuten
dataType:active-minutes
filter parameter:active_minutes
Eintragstyp : Intervall
Speicherauflösung : 1 Minute

Kompatible Geräte

  • Fitbit Air
  • Fitbit Alta
  • Fitbit Alta HR
  • Fitbit Blaze
  • Fitbit Charge 2
  • Fitbit Charge 3
  • Fitbit Flex 2
  • Fitbit Inspire
  • Fitbit Inspire HR
  • Pixel Watch 4
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Aktivzonenminuten
dataType:active-zone-minutes
filter parameter:active_zone_minutes
Eintragstyp : Intervall
Speicherauflösung : 1 Minute

Kompatible Geräte

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Aktivitätsniveau
dataType:activity-level
filter parameter:activity_level
Eintragstyp : Intervall
Auflisten, Abgleichen .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Höhe
dataType:altitude
filter parameter:altitude
Eintragstyp : Intervall
Speicherauflösung : 1 Minute
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Blutzucker
dataType:blood-glucose
filter parameter:blood_glucose
Eintragstyp : Beispiel
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Körperfett
dataType:body-fat
filter parameter:body_fat
Eintragstyp : Beispiel

Kompatible Geräte

list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Kalorien in Herzfrequenzzone
dataType:calories-in-heart-rate-zone
filter parameter:calories_in_heart_rate_zone
Eintragstyp : Intervall
Speicherauflösung : 1 Minute
Zusammenfassung, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Körpertemperatur
dataType:core-body-temperature
filter parameter:core_body_temperature
Eintragstyp : Beispiel
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Tägliche Herzfrequenzvariabilität
dataType:daily-heart-rate-variability
filter parameter:daily_heart_rate_variability
Eintragstyp : Täglich

Kompatible Geräte

Auflisten, Abgleichen .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Tägliche Herzfrequenzzonen
dataType:daily-heart-rate-zones
filter parameter:daily_heart_rate_zones
Eintragstyp : Täglich
Auflisten, Abgleichen .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Tägliche Sauerstoffsättigung
dataType:daily-oxygen-saturation
filter parameter:daily_oxygen_saturation
Eintragstyp : Täglich

Kompatible Geräte

Auflisten, Abgleichen .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Tägliche Atemfrequenz
dataType:daily-respiratory-rate
filter parameter:daily_respiratory_rate
Eintragstyp : Täglich

Kompatible Geräte

Auflisten, Abgleichen .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Tägliche Ruheherzfrequenz
dataType:daily-resting-heart-rate
filter parameter:daily_resting_heart_rate
Eintragstyp : Täglich

Kompatible Geräte

Auflisten, Abgleichen .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Tägliche Ableitungen der Schlaftemperatur
dataType:daily-sleep-temperature-derivations
filter parameter:daily_sleep_temperature_derivations
Eintragstyp : Täglich

Kompatible Geräte

Auflisten, Abgleichen .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Tägliche maximale Sauerstoffaufnahme
dataType:daily-vo2-max
filter parameter:daily_vo2_max
Eintragstyp : Täglich

Kompatible Geräte

Auflisten, Abgleichen .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Entfernung
dataType:distance
filter parameter:distance
Eintragstyp : Intervall
Speicherauflösung : 1 Minute

Kompatible Geräte

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Elektrokardiogramm (EKG)
dataType:electrocardiogram
filter parameter:electrocardiogram
Eintragstyp : Sitzung

Kompatible Geräte

list .ecg.readonly
Training
dataType:exercise
filter parameter:exercise
Eintragstyp : Sitzung

Kompatible Geräte

list, get, reconcile, create, update, batchDelete .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Stockwerke
dataType:floors
filter parameter:floors
Eintragstyp : Intervall
Speicherauflösung : 1 Minute
abgleichen, zusammenfassen, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Essen
dataType:food
filter parameter:food
Eintragstyp : „Lebensmittel“
list, get .nutrition.readonly
.nutrition.writeonly
Maßeinheit für Lebensmittel
dataType:food-measurement-unit
filter parameter:food_measurement_unit
Eintragstyp : „Lebensmittel“

Kompatible Geräte

list, get .nutrition.readonly
.nutrition.writeonly
Herzfrequenz
dataType:heart-rate
filter parameter:heart_rate
Eintragstyp : Beispiel
Speicherauflösung : 1 Sekunde (1 s)

Kompatible Geräte

list, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Herzfrequenzvariabilität
dataType:heart-rate-variability
filter parameter:heart_rate_variability
Eintragstyp : Beispiel

Kompatible Geräte

Auflisten, Abgleichen .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Höhe
dataType:height
filter parameter:height
Eintragstyp : Beispiel
list, get, reconcile, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Flüssigkeitszufuhr-Protokoll
dataType:hydration-log
filter parameter:hydration_log
Eintragstyp : Sitzung
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
Benachrichtigung über einen unregelmäßigen Herzrhythmus
dataType:irregular-rhythm-notification
filter parameter:irregular_rhythm_notification
Eintragstyp : Sitzung
list .irn.readonly
Menstruationszyklus
dataType:menstrual-period
filter parameter:menstrual_period
Eintragstyp : Intervall
create, update, batchDelete .reproductive_health.writeonly
Stimmungen
dataType:moods
filter parameter:moods
Eintragstyp : Beispiel
create, update, batchDelete .mindfulness.writeonly
Ernährungsprotokoll
dataType:nutrition-log
filter parameter:nutrition_log
Eintragstyp : Sitzung

Kompatible Geräte

list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
Ovulationstest
dataType:ovulation-test
filter parameter:ovulation_test
Eintragstyp : Beispiel
create, update, batchDelete .reproductive_health.writeonly
Sauerstoffsättigung
dataType:oxygen-saturation
filter parameter:oxygen_saturation
Eintragstyp : Beispiel

Kompatible Geräte

Auflisten, Abgleichen .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Zusammenfassung der Atemfrequenz im Schlaf
dataType:respiratory-rate-sleep-summary
filter parameter:respiratory_rate_sleep_summary
Eintragstyp : Beispiel

Kompatible Geräte

Auflisten, Abgleichen .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Maximale Sauerstoffaufnahme bei Lauf
dataType:run-vo2-max
filter parameter:run_vo2_max
Eintragstyp : Beispiel

Kompatible Geräte

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Inaktivitätszeitraum
dataType:sedentary-period
filter parameter:sedentary_period
Eintragstyp : Intervall

Kompatible Geräte

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Schlaf
dataType:sleep
filter parameter:sleep
Eintragstyp : Sitzung

Kompatible Geräte

list, get, reconcile, create, update, batchDelete .sleep.readonly
.sleep.writeonly
Schritte
dataType:steps
filter parameter:steps
Eintragstyp : Intervall
Speicherauflösung : 1 Minute

Kompatible Geräte

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Daten zu Bahnen
dataType:swim-lengths-data
filter parameter:swim_lengths_data
Eintragstyp : Intervall

Kompatible Geräte

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Symptome
dataType:symptoms
filter parameter:symptoms
Eintragstyp : Beispiel
create, update, batchDelete .logged_symptoms.writeonly
Zeit in Herzfrequenzzone
dataType:time-in-heart-rate-zone
filter parameter:time_in_heart_rate_zone
Eintragstyp : Intervall
Speicherauflösung : 1 Minute
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Kalorien insgesamt
dataType:total-calories
filter parameter:total_calories
Eintragstyp : Intervall
Speicherauflösung : 1 Minute

Kompatible Geräte

Zusammenfassung, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Maximale Sauerstoffaufnahme
dataType:vo2-max
filter parameter:vo2_max
Eintragstyp : Beispiel

Kompatible Geräte

Auflisten, Abgleichen .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Gewicht
dataType:weight
filter parameter:weight
Eintragstyp : Beispiel

Kompatible Geräte

list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly

Abfragebeschränkungen

Wenn Sie Datenpunkte, Rollups oder tägliche Rollups über die API abfragen, beachten Sie die folgenden Einschränkungen:

  • Filteranforderungen:Für einige schreibgeschützte abgeleitete Datentypen wie total-calories ist ein Filter erforderlich, der eine Intervallstartzeit (mit physischer oder bürgerlicher Zeit) angibt.
  • Einschränkungen für den Abfragebereich:Für die Aggregationsendpunkte für Rollup und tägliche Rollups gelten je nach Datentyp maximale Einschränkungen für den Abfragebereich:
    • Der maximale Zeitraum für Abfragen beträgt 14 Tage für calories-in-heart-rate-zone, heart-rate, active-minutes und total-calories.
    • Ein maximaler Abfragezeitraum von 90 Tagen für alle anderen Datentypen.
  • Größe des Rollup-Fensters:Beim Aufrufen des rollUp-Endpunkts muss die windowSize-Dauer mindestens 1 Sekunde ("1s") betragen. Dauern unter einer Sekunde werden mit INVALID_ARGUMENT abgelehnt. Wählen Sie außerdem ein windowSize aus, das mindestens so groß ist wie die zugrunde liegende Speicherauflösung des Datentyps (z. B. "60s" für Datentypen mit 1-Minuten-Intervall wie steps und distance), um eine ungleichmäßige Verteilung auf die Unterintervalle zu vermeiden. Weitere Informationen finden Sie unter Größe des Rollup-Fensters und zugrunde liegende Speicherauflösung.

Tages- und Intervalldatentypen

Für bestimmte physiologische Messwerte wie die Herzfrequenzvariabilität (HFV) oder die Sauerstoffsättigung (SpO2) bietet die Google Health API zwei verschiedene Datentypen: eine Tagesversion und eine Intervallversion. Die Unterschiede zu kennen ist entscheidend, um die richtige Metrik für Ihren Anwendungsfall auszuwählen:

  • Täglich: Eine einzelne, vorab aggregierte Zusammenfassung für den gesamten Tag. Verwenden Sie diese Option für allgemeine Trends und tägliche Dashboards, um die Verarbeitung zu optimieren.

  • Intervall: Granulare Messungen mit hoher Auflösung, die den ganzen Tag über durchgeführt werden. Verwenden Sie diese Option, um Schwankungen innerhalb eines Tages darzustellen oder detaillierte Analysen auf Stundenbasis durchzuführen.

Datenverfügbarkeit

Aktualisierungen der Nutzerdaten sind erst verfügbar, nachdem der Nutzer seinen Aktivitätstracker synchronisiert oder neue Daten manuell in die Fitbit App oder Web-App eingegeben hat. Das Fitbit-Gerät und die Fitbit App können alle 15 Minuten automatisch synchronisiert werden, wenn die Fitbit App auf dem Mobilgerät geöffnet ist und die beiden eine aktive Datenverbindung haben und sich in Bluetooth-Reichweite befinden. Wenn der Nutzer seine Aktivität mit MobileTrack aufzeichnet, wird MobileTrack stündlich synchronisiert, solange die App geöffnet ist.

Verlaufsdaten abfragen

Einer der Hauptvorteile der Google Health API ist die Möglichkeit, die Leistung eines Nutzers zu verfolgen und seine Vitalparameter über einen längeren Zeitraum zu überwachen. Sie können die Daten eines Nutzers abfragen, die bis zum Zeitpunkt der Aufzeichnung zurückreichen. Die API unterliegt keinen Einschränkungen hinsichtlich der Menge an Verlaufsdaten, die Ihre Anwendung nutzen kann.

Für das Abfragen von Verlaufsdaten gelten jedoch weiterhin die standardmäßigen Ratenbeschränkungen. Um die Systemstabilität zu gewährleisten und übermäßige Nutzlasten zu vermeiden, verwendet die Google Health API die automatische Paginierung mit endpunktspezifischen Seitengrößen. Beachten Sie die folgenden Grenzen und Verhaltensweisen:

  • Automatische Paginierung:Wenn Sie einen langen Zeitraum abfragen, gibt die API nur die erste Seite der Ergebnisse bis zur maximalen Seitengröße für diesen Endpunkt zurück, zusammen mit einem nextPageToken. Sie müssen nextPageToken verwenden, um nachfolgende Seiten anzufordern.
  • Variable Seitengrößen:Die Obergrenzen hängen vom Endpunkt und Datentyp ab. Bei den meisten Datentypen ist die Seitengröße auf maximal 10.000 begrenzt. Bei bestimmten Datentypen wie exercise und sleep ist die Standard- und maximale Seitengröße jedoch auf 25 begrenzt. Wenn ein Client beispielsweise alle Schlafdaten der letzten zehn Jahre anfordert, gibt die API auf der ersten Seite trotzdem nur 25 Schlafsitzungen zurück.
  • Einschränkungen für den Rollup-Zeitraum:Für Endpunkte für Daten-Rollup und ‑Aggregation (z. B. rollUp und dailyRollUp) sind Abfragezeiträume je nach Datentyp eingeschränkt:
    • Ein maximaler Zeitraum von 14 Tagen für calories-in-heart-rate-zone, heart-rate, active-minutes und total-calories.
    • Ein maximaler Zeitraum von 90 Tagen für alle anderen Rollup-Datentypen.

Je nach Menge der Verlaufsdaten, die Ihre Anwendung benötigt, müssen Sie die Seiten sequenziell durchlaufen, um das gesamte Dataset abzurufen. Berücksichtigen Sie dies beim Entwerfen des Datensynchronisierungsprozesses Ihrer Anwendung.

Damit Sie eine optimale Leistung erzielen und API-Fehler vermeiden, sollten Sie beim Abfragen von Verlaufsdaten die folgenden Richtlinien beachten:

Phasensynchronisierung von Daten (aktive und selten genutzte Daten)

  • Erster „Hot“-Load:Während der primären Ladesequenz werden nur die Daten der letzten 7–14 Tage abgerufen und gerendert. So können Nutzer Daten sofort sehen, ohne auf zeitaufwendige Abfragen warten zu müssen.
  • Kalter Hintergrund-Load:Das Abrufen älterer Verlaufsdaten wird nach dem Rendern der primären Benutzeroberfläche an eine asynchrone Warteschlange mit niedrigerer Priorität oder einen Hintergrundprozess delegiert.

Abfrage-Chunking für die Aggregation

  • Da für Rollup- und tägliche Rollup-Endpunkte ein maximaler Zeitraum gilt (je nach Datentyp 14 oder 90 Tage), müssen Sie umfangreiche Abfragen für historische Aggregationen in kleinere, sequenzielle Intervalle innerhalb dieser Grenzwerte aufteilen.
  • Führen Sie diese untergeordneten Anfragen in Batches oder sequenziell aus, um die Grenzwerte für die Parallelität einzuhalten und gleichmäßige Fortschrittsanzeigen in der Benutzeroberfläche zu erhalten.

Vorab aggregierte Roll-ups nutzen

Stellen Sie Übersichts-Dashboards und Trenddiagramme so um, dass vorab aggregierte Zusammenfassungsendpunkte wie DailyRollUpDataPoints verwendet werden. Dadurch wird der Rechenaufwand im Backend und die Netzwerkübertragungszeit zum Client drastisch reduziert.

Robuste Fehlerbehandlung (intelligente Wiederholungsversuche)

  • Implementieren Sie eine strikte Verarbeitung des exponentiellen Backoffs, wenn Ratenbeschränkungen (429 Too Many Requests) und Server-Gateway-Timeouts (504 Gateway Timeout) auftreten. Versuchen Sie niemals, große, fehlgeschlagene Nutzlasten sofort noch einmal zu senden. Durch sofortige Wiederholungsversuche wird die Überlastung des Backends verstärkt und die Systemleistung verschlechtert.

Zugriff durch Drittanbieter

Fitbit-Geräte können nicht direkt mit Drittanbieter-Apps oder ‑Diensten kommunizieren. Diese Geräte sind so konzipiert, dass sie ausschließlich mit der mobilen Fitbit App kommunizieren und sich mit ihr synchronisieren.

Das Gerät synchronisiert Daten im Laufe des Tages automatisch, wenn die Fitbit App geöffnet ist, oder alle 15 Minuten, wenn Bluetooth aktiviert ist und die App im Hintergrund ausgeführt wird. Sobald die Synchronisierung abgeschlossen ist, sind die Daten über die Google Health API für Drittanbieterdienste verfügbar.

Entfernungsstandards

Trainingsdistanzen wie elevationGainMillimeters werden aus folgenden Gründen in Millimetern gemessen:

  1. Datenpräzision beibehalten: Der wichtigste Grund für die Verwendung von Millimetern ist, dass wir keine Präzision bei den Daten verlieren, die wir lesen und bereitstellen. Durch die Verwendung einer feingliedrigen Einheit wie Millimeter können wir Messungen mit hoher Genauigkeit darstellen.
  2. Standardisierung: Millimeter sind die standardisierte Einheit, die in unseren Diensten verwendet wird. Diese Konsistenz sorgt für eine einheitliche Erfahrung für Entwickler, die mit verschiedenen Teilen der API interagieren.
  3. Unterstützung für verschiedene Messsysteme: Wenn Entwickler eine Basiseinheit wie Millimeter verwenden, können sie problemlos in jede andere Einheit umrechnen, unabhängig davon, ob sie mit metrischen, imperialen oder anderen Messsystemen arbeiten.

Variable Tageslängen

Bei der Zeitverarbeitung durch die Health API wird die Zeit des Nutzers priorisiert, um variable Tageslängen aufgrund der Sommerzeit oder von Reisen zu berücksichtigen. Jeder Datenpunkt wird mit einem physischen UTC-Zeitstempel und dem zum Zeitpunkt des Ereignisses aktiven UTC-Offset gespeichert. Dadurch kann das System Folgendes tun:

  • Ordnen Sie das Ereignis einem genauen physischen Moment zu.
  • Korrigieren Sie die Zeit für die Aggregation entsprechend dem lokalen Kontext des Nutzers.

Sommerzeit

Bei der Umstellung auf die Sommerzeit wird die Uhr eine Stunde zurückgestellt, sodass der Tag 25 Stunden hat. Die Zusammenfassung für dieses Datum enthält also 25 Stunden Daten. Bei der Umstellung auf die Sommerzeit dauert der bürgerliche Tag nur 23 Stunden, da die Zeit auf die Standardzeit zurückgestellt wird.

Reisen

Reisen durch Zeitzonen können noch größere Schwankungen in der physischen Dauer eines einzelnen bürgerlichen Tages verursachen.

Verwenden Sie den Endpunkt dailyRollUp, um Zeitzonenunterschiede auszugleichen. Die Daten werden automatisch dem Kalendertag zugeordnet, an dem sie aufgezeichnet wurden, und zwar entsprechend der Ortszeit des Nutzers. So wird der Tag trotz Zeitzonenverschiebungen effektiv „zusammengefügt“.