Aby wyznaczyć przesunięcie UTC, odejmij datę i godzinę UTC od odpowiadającej im lokalnej daty i godziny, uwzględniając zmianę daty. W Numbers na Macu możesz obliczyć je w minutach bez wybierania nazwy strefy czasowej.
Ten poradnik jest przeznaczony dla osób sprawdzających znacznik czasu publikacji względem jego odpowiednika w UTC. Wszystkie podane niżej daty publikacji są syntetyczne. Zadanie polega na odzyskaniu przesunięcia dla chwili publikacji i zapisaniu tego, co potwierdzają dostępne dane.
Jakich informacji potrzebujesz przed obliczeniami?
Potrzebujesz dwóch zapisów tej samej chwili publikacji: pełnej lokalnej daty i godziny oraz pełnej daty i godziny UTC. Upewnij się, że oba zapisy dotyczą publikacji, a nie jeden publikacji, a drugi późniejszej edycji. Ich wzajemny związek jest warunkiem wstępnym; wiarygodnie wyglądająca różnica liczbowa nie dowodzi, że te wartości do siebie pasują.
Rozróżniaj te cztery pojęcia:
| Pojęcie | Przykład syntetyczny | Co określa |
|---|---|---|
| Data cywilna | 2026-07-01 |
Dzień kalendarzowy, bez godziny i bez relacji z UTC |
| Lokalna data i godzina | 2026-07-01 05:25:00 |
Pola kalendarza i zegara, które nadal wymagają przesunięcia lub strefy, aby określić chwilę |
| Chwila | 2026-06-30T23:40:00Z |
Konkretny moment wyrażony w UTC |
| Przesunięcie UTC | +05:45 |
Różnicę między lokalnym czasem zegarowym a UTC w danej chwili |
| Nazwana strefa czasowa | Podany identyfikator strefy IANA | Zestaw reguł do wyznaczania przesunięć dla różnych chwil |
Apple w podobny sposób rozróżnia te pojęcia w Foundation: Date reprezentuje punkt w czasie niezależnie od kalendarza i strefy, natomiast DateComponents reprezentuje pola kalendarza interpretowane z użyciem kalendarza i strefy czasowej. Wyświetlany ciąg daty i chwila są więc różnymi rodzajami danych wejściowych. Apple: daty i godziny
W tym arkuszu używaj prawidłowych dat gregoriańskich i pełnych sekund z zakresu od 00 do 59. Zachowaj oryginalne ciągi znaczników czasu obok obliczeń. Jeśli którekolwiek źródło podaje tylko datę albo godzinę bez daty, zdobądź brakujące informacje przed obliczeniem dokładnego przesunięcia.
Jak działa obliczanie przesunięcia?
RFC 3339 definiuje konwencję znaku jako czas lokalny minus UTC. Wynik dodatni oznacza, że lokalny zegar jest do przodu; ujemny — że jest do tyłu. Aby odzyskać czas UTC, odejmij przesunięcie od lokalnej daty i godziny. RFC 3339, sekcja 4.2
Dla pierwszej syntetycznej publikacji sparowane wartości to:
- UTC:
2026-06-30T23:40:00Z - Lokalnie:
2026-07-01 05:25:00 - Różnica: dodatnie 5 godzin i 45 minut
- Wyznaczone przesunięcie:
+05:45
Lokalna data przypada dzień później. Samo porównanie godzin dałoby mylący wynik ujemny. Jawne obliczenie w minutach pokazuje, dlaczego data ma znaczenie:
przesunięcie_w_minutach = 1440 × różnica_dni_kalendarzowych
+ lokalny_czas_w_minutach
- czas_UTC_w_minutach
różnica_dni_kalendarzowych = +1
lokalny_czas_w_minutach = 5 × 60 + 25 = 325
czas_UTC_w_minutach = 23 × 60 + 40 = 1420
przesunięcie_w_minutach = 1440 + 325 - 1420 = 345
345 minut = 5 godzin i 45 minut
Różnica dni kalendarzowych oznacza tutaj różnicę między pełnymi datami. Nie odejmuj od siebie numerów dni miesiąca: 1 lipca minus 30 czerwca to jeden dzień, mimo że 1 - 30 jest ujemne. Poniższy arkusz pozwala, by obliczenia dat uwzględniły granicę miesiąca.
Jak obliczyć to w Numbers na Macu?
Potrzebujesz aplikacji Numbers i arkusza kalkulacyjnego zawierającego jedną tabelę. W przykładach użyto angielskich nazw funkcji i przecinków jako separatorów. Jeśli edytor formuł wymaga innego separatora, wstaw funkcję za pomocą przeglądarki funkcji i uzupełnij jej pola argumentów.
1. Utwórz kolumny z czytelnymi nagłówkami
W wierszu 1 wpisz następujące nagłówki: UTC fields w A1, Local fields w B1, Offset minutes w C1 oraz Reconstructed UTC w D1. Te nagłówki opisują dane wejściowe; wpisanie daty w kolumnie A samo w sobie nie wykonuje konwersji strefy czasowej.
Zaznacz kolumny A i B, a następnie na pasku bocznym Format wybierz kartę Cell i menu Data Format, po czym ustaw Date & Time. Wybierz formaty wyświetlania pokazujące pełną datę i godzinę, łącznie z sekundami. Apple opisuje te ustawienia w przewodniku Numbers dotyczącym formatowania komórek.
2. Jawnie utwórz obie wartości
Kliknij A2 i wpisz następującą formułę. Naciśnij Return, aby ją zatwierdzić:
=DATE(2026,6,30)+DURATION(0,0,23,40,0,0)
W B2 wpisz:
=DATE(2026,7,1)+DURATION(0,0,5,25,0,0)
DATE przyjmuje rok, miesiąc i dzień jako osobne liczby, dzięki czemu unikasz niejednoznacznych ciągów daty. DURATION przyjmuje kolejno tygodnie, dni, godziny, minuty, sekundy i milisekundy. W tym przypadku dodanie czasu trwania do każdej daty określa jej godzinę. Apple: DATE, Apple: DURATION
Sprawdź, czy w A2 wyświetla się 30 czerwca o 23:40:00, a w B2 — 1 lipca o 05:25:00. W ten sposób zapisujesz oba zestawy pól kalendarza do odejmowania. Zachowaj oryginalny sufiks UTC w notatkach źródłowych, zamiast polegać na wyglądzie komórki arkusza, by rozpoznać UTC.
3. Odejmij czas UTC od lokalnego
Wpisz w C2:
=DUR2MINUTES(B2-A2)
Oczekiwany wynik to 345. Odjęcie wartości daty i godziny daje czas trwania, a DUR2MINUTES wyraża go jako liczbę minut. W razie potrzeby ustaw Data Format komórki C2 na Number. Apple: DUR2MINUTES
Aby wpisać lub sprawdzić formułę, zaznacz jej komórkę i wpisz =; Numbers otworzy Formula Editor. Jeśli formuła zgłosi błąd, kliknij wskaźnik błędu, aby przeczytać jego wyjaśnienie przed kontynuowaniem. Apple: obliczanie wartości przy użyciu danych w komórkach tabel w Numbers na Macu
4. Zapisz przesunięcie ze znakiem i sprawdź wynik
Przelicz bezwzględną liczbę minut na pełne godziny i pozostałe minuty. Dla 345 daje to 5 godzin i 45 minut. Ponieważ wynik jest dodatni, zapisz +05:45. Wynik -210 oznaczałby -03:30; znak odnosi się do całego przesunięcia.
W D2 wpisz obliczenie odwrotne:
=B2-DURATION(0,0,0,C2,0,0)
Ustaw format D2 na Date & Time, tak aby wyświetlały się oba składniki. Powinna być widoczna ta sama data i godzina co w A2. Sprawdza to kierunek obliczeń i odtworzenie wartości. Nie dowodzi niezależnie, że dane wejściowe rzeczywiście dotyczą tej samej publikacji.
Które przykłady pomagają wykryć błędy daty i znaku?
Użyj tych syntetycznych par, aby sprawdzić swoją interpretację. Dla każdego dodatkowego wiersza utwórz A i B za pomocą DATE oraz DURATION, a następnie w odejmowaniu użyj odwołań do komórek z tego wiersza.
| Znacznik czasu publikacji UTC | Odpowiadające lokalne pola | Przesunięcie w minutach | Przesunięcie |
|---|---|---|---|
2026-06-30T23:40:00Z |
2026-07-01 05:25:00 |
345 | +05:45 |
2026-07-01T02:15:00Z |
2026-06-30 22:45:00 |
-210 | -03:30 |
2026-08-31T23:30:00Z |
2026-09-01 01:30:00 |
120 | +02:00 |
Druga para przekracza granicę daty wstecz, na poprzedni dzień lokalny. Trzecia przekracza granicę miesiąca przy przesunięciu o pełną godzinę. Razem pomagają wykryć odwróconą kolejność odejmowania, pominięte daty i założenie, że przesunięcia muszą obejmować pełne godziny.
Pozostaw widoczną liczbę miejsc dziesiętnych wystarczającą do zauważenia wyniku z ułamkiem minuty. W przypadku tych danych wejściowych z pełnymi sekundami nieoczekiwany ułamek warto sprawdzić: skontroluj sekundy, precyzję danych wejściowych i to, czy rekordy rzeczywiście do siebie pasują. Nie zaokrąglaj go tylko po to, by otrzymać znajomo wyglądające przesunięcie. Przesunięcia numeryczne RFC 3339 mają precyzję do minuty, więc rozbieżności obejmującej sekundy nie da się wiernie zapisać przez samo dopisanie przesunięcia HH:MM. RFC 3339, sekcja 4.2
Dlaczego nie da się wywnioskować jednej nazwanej strefy czasowej?
Przesunięcie opisuje relację w jednej chwili. Nazwana strefa czasowa określa reguły wyznaczania tej relacji w innych chwilach. RFC 9557 wyraźnie rozróżnia te pojęcia i wyjaśnia, dlaczego samo przesunięcie nie wystarcza do operacji na lokalnym kalendarzu, takich jak znalezienie tej samej lokalnej godziny następnego dnia. Zgodność przesunięcia nie dowodzi zatem, że chodzi o jedną konkretną nazwaną strefę. RFC 9557: definicja strefy czasowej
Zapisz wynik jako „Wyznaczone przesunięcie publikacji: +05:45; nazwana strefa czasowa: nieznana”. Jeśli później uzyskasz identyfikator strefy ze źródła, zachowaj go osobno. Dodatkowe pary publikacji mogą ujawnić kolejne przesunięcia, ale wybór strefy wymaga dowodów wykraczających poza wskazanie pasującej pozycji.
Interfejsy API Apple wykonują obliczenia w tym kierunku. TimeZone.secondsFromGMT(for:) przyjmuje istniejącą strefę czasową i datę, aby obliczyć jej przesunięcie. Argument daty domyślnie oznacza bieżącą datę, więc przy sprawdzaniu publikacji trzeba podać chwilę publikacji. Metoda nie przyjmuje przesunięcia i nie zwraca pierwotnej nazwanej strefy. Apple: secondsFromGMT(for:)
Kiedy należy przerwać i uzyskać lepsze dane wejściowe?
Przed zaakceptowaniem wyniku zastosuj następującą sekwencję decyzji:
- Dostępne są tylko daty cywilne: uzyskaj godziny i odniesienie UTC. Sama data nie określa chwili.
- Odniesienie ma niezerowe przesunięcie liczbowe: przed użyciem tego arkusza przelicz je na UTC z uwzględnieniem podanego przesunięcia.
- Oba dane wejściowe zostały już przeliczone na chwile: zachowaj lub odzyskaj pierwotne lokalne pola. Odjęcie dwóch zapisów tej samej chwili po normalizacji daje zero.
- Różnica zmienia się po wyświetleniu dat: sprawdź pełne zapisane wartości. Ukryta data nadal jest częścią obliczenia.
- Obliczenie działa, ale nie masz pewności co do pary: zachowaj ją jako różnicę kandydującą do czasu potwierdzenia związku z publikacją.
Numbers może po cichu uzupełnić brakujące składniki: według Apple wpisanie samej godziny dodaje dzisiejszą datę. Ukrycie daty lub godziny zmienia jej wyświetlanie, ale wartość nadal można wykorzystać w obliczeniach. Jeśli coś pozostaje niejasne na podstawie widocznej komórki, sprawdź Smart Cell View. Apple: formatowanie dat, walut i innych danych w Numbers na Macu
Ponadto znacznik czasu UTC zakończony na Z określa chwilę UTC, ale nie pierwotną lokalną strefę. RFC 9557 aktualizuje sposób traktowania Z w RFC 3339, aby uwzględnić nieznane lokalne przesunięcie. Dlatego do tego wyznaczenia niezbędny jest osobny zapis lokalny. RFC 9557, sekcja 2.2
W przypadku zakończonej weryfikacji publikacji zachowaj pierwotną parę, przesunięcie ze znakiem i uzasadnienie, dlaczego obie wartości reprezentują tę samą chwilę. Dzięki temu wynik można odtworzyć, a nazwana strefa pozostaje nieznana, jeśli dostępne dane jej nie określają.
Źródła
RFC 3339: data i czas w Internecie: znaczniki czasu — RFC Editor
RFC 9557: data i czas w Internecie: znaczniki czasu z dodatkowymi informacjami — RFC Editor
Daty i godziny — dokumentacja dla programistów Apple
secondsFromGMT(for:) — dokumentacja dla programistów Apple
Formatowanie dat, walut i innych danych w Numbers na Macu — Wsparcie Apple
Obliczanie wartości przy użyciu danych w komórkach tabel w Numbers na Macu — Wsparcie Apple
DATE — Wsparcie Apple
DURATION — Wsparcie Apple
DUR2MINUTES — Wsparcie Apple