Pojęcia
Strefy czasowe
Momenty są podawane w ISO 8601 w UTC. Tam, gdzie czas czyta człowiek, obok jest czas lokalny miejsca wydarzenia wraz ze strefą czasową wydarzenia.
Dwa rodzaje czasu
Momenty to chwile, w których coś się wydarzyło lub wydarzy: rejestracja, płatność, check-in, początek sesji. Są zapisywane w ISO 8601 w UTC, z milisekundami i literą Z, a ich nazwy kończą się na Utc:
"checkedInUtc": "2026-11-12T07:58:12.000Z"Czas lokalny to godzina, którą osoba na miejscu wydarzenia widzi w programie. Sesje, zmiany, kody rabatowe i okresy sprzedaży podają go obok momentu, w czasie miejsca wydarzenia, bez strefy, a ich nazwy kończą się na Local:
{
"title": "Opening keynote: software that finds its way",
"startsUtc": "2026-11-12T08:30:00.000Z",
"startsLocal": "2026-11-12T09:30",
"timeZone": "Europe/Amsterdam"
}Wydarzenie podaje strefę czasową IANA swojego miejsca w polu timeZone. Jego startDate i endDate to zwykłe daty w miejscu wydarzenia.
Którego użyć
- Do porównywania, sortowania, przechowywania i obliczeń: momentu w UTC.
- Do pokazania godziny człowiekowi: czasu lokalnego w otrzymanej postaci albo momentu przeliczonego na
timeZonewydarzenia. Nigdy na strefę twojego serwera: sesja o 9:30 w Amsterdamie jest o 9:30 dla każdego uczestnika, niezależnie od tego, gdzie jest jego laptop. - Zmiany czasu są już uwzględnione: sesja w ostatnią niedzielę października ma poprawny moment UTC dla swojego czasu lokalnego.
Wysyłanie czasów
Momenty, które wysyłasz (salesEndUtc, endsUtc), są odczytywane jako UTC niezależnie od zapisu: przesunięcie takie jak +01:00 jest uwzględniane, a czas bez przesunięcia to UTC, nigdy strefa serwera. Tak samo działa updatedSince.
Nową sesję możesz podać w czasie lokalnym (startsLocal, endsLocal), a AttendBeacon przeliczy ją według strefy czasowej wydarzenia, albo w UTC (startsUtc, endsUtc). Zwykle masz pod ręką czas lokalny: na niego umówił się prelegent.
curl -X POST "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/sessions" \
-H "Authorization: Bearer $ATTENDBEACON_KEY" \
-H "Content-Type: application/json" \
-d '{ "title": "Closing keynote: what we learned", "kind": "keynote", "startsLocal": "2026-11-13T16:30", "endsLocal": "2026-11-13T17:15" }'await fetch(`${base}/events/${eventId}/sessions`, {
method: "POST",
headers: { Authorization: `Bearer ${key}`, "Content-Type": "application/json" },
body: JSON.stringify({ title: "Closing keynote: what we learned", kind: "keynote", startsLocal: "2026-11-13T16:30", endsLocal: "2026-11-13T17:15" })
});Dni w podsumowaniach
Tam, gdzie API liczy dane dziennie (tempo sprzedaży), dni są dniami miejsca wydarzenia w jego strefie czasowej. Rejestracja o 0:30 w Amsterdamie liczy się więc do tego dnia, a nie do poprzedniego według UTC.