Strefy czasowe i ustawienia regionalne
Prawidłowa obsługa różnic stref czasowych i ustawień regionalnych.
Strefy czasowe i ustawienia regionalne to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 4 lekcji w sumie.
Strefy czasowe i ustawienia regionalne
Ten sam moment reprezentowany przez Date może być wyświetlany różnie w różnych częściach świata. Obiekty TimeZone i Locale określają sposób jego interpretacji i prezentacji.
Podstawy TimeZone
Obiekt TimeZone reprezentuje przesunięcie względem UTC wraz z regułami czasu letniego. TimeZone.current wskazuje strefę urządzenia.
import Foundation
let tz = TimeZone.current
print("Identifier present: \(!tz.identifier.isEmpty)")Tworzenie konkretnej strefy
Imienną strefę można utworzyć za pomocą TimeZone(identifier:), na przykład "America/New_York" lub "Europe/Istanbul".
import Foundation
if let tokyo = TimeZone(identifier: "Asia/Tokyo") {
print("Tokyo offset seconds: \(tokyo.secondsFromGMT())")
}Przesunięcia względem GMT
secondsFromGMT(for:) zwraca bieżące przesunięcie, które w ciągu roku może się zmieniać z powodu czasu letniego.
import Foundation
let utc = TimeZone(identifier: "UTC")!
print("UTC offset is zero: \(utc.secondsFromGMT() == 0)")Strefy wpływają na kalendarze
Należy ustawić właściwość timeZone kalendarza, aby obliczenia dotyczące dni i godzin korzystały z wybranego regionu zamiast z domyślnej strefy urządzenia.
import Foundation
var cal = Calendar.current
cal.timeZone = TimeZone(identifier: "UTC")!
let hour = cal.component(.hour, from: Date())
print("Hour in UTC between 0 and 23: \(0...23 ~= hour)")Strefy w formatowaniu
Obiekt Date.FormatStyle może zawierać określoną strefę czasową, dzięki czemu wynik odzwierciedla wybrany region niezależnie od ustawień urządzenia.
import Foundation
let style = Date.FormatStyle(date: .omitted, time: .shortened)
.timeZone(TimeZone(identifier: "UTC")!)
let s = Date().formatted(style)
print(!s.isEmpty)Podstawy Locale
Obiekt Locale opisuje język i konwencje regionalne: nazwy miesięcy, pierwszy dzień tygodnia oraz kolejność liczb i elementów daty.
import Foundation
let locale = Locale.current
print("Has identifier: \(!locale.identifier.isEmpty)")Tworzenie obiektu Locale
Konkretną lokalizację można utworzyć za pomocą Locale(identifier:), na przykład "fr_FR" lub "tr_TR".
import Foundation
let french = Locale(identifier: "fr_FR")
print("French locale id: \(french.identifier)")Locale zmienia wynik
Zastosowanie lokalizacji do stylu formatowania zmienia nazwy miesięcy i ich kolejność. Ta sama data jest zapisywana inaczej w każdym języku.
import Foundation
let now = Date()
let style = Date.FormatStyle(date: .long, time: .omitted)
.locale(Locale(identifier: "en_US"))
print(!now.formatted(style).isEmpty)Locale i Calendar razem
Locale wpływa również na pierwszy dzień tygodnia i numerację tygodni w kalendarzu. Aby uzyskać w pełni poprawne wyniki, należy połączyć strefę, lokalizację i kalendarz.
import Foundation
var cal = Calendar(identifier: .gregorian)
cal.locale = Locale(identifier: "en_US")
print("First weekday: \(cal.firstWeekday)")Przechowywanie w UTC, wyświetlanie lokalnie
Najlepsza praktyka: daty należy przechowywać i przesyłać w standardzie UTC, a dopiero na potrzeby wyświetlania konwertować je do strefy czasowej i lokalizacji użytkownika.
import Foundation
let instant = Date()
let utcStyle = Date.FormatStyle(date: .numeric, time: .standard)
.timeZone(TimeZone(identifier: "UTC")!)
print("UTC display ready: \(!instant.formatted(utcStyle).isEmpty)")Szybkie sprawdzenie
Jaki jest zalecany sposób obsługi dat w różnych regionach?
Podsumowanie
TimeZone określa przesunięcie względem UTC i reguły czasu letniego, natomiast Locale steruje językiem oraz formatowaniem regionalnym. Oba obiekty można przypisać do kalendarzy i stylów formatowania. Daty należy przechowywać w UTC, a do lokalnej strefy i lokalizacji konwertować je dopiero podczas wyświetlania. To kończy kurs dotyczący dat i kalendarzy.
Często zadawane pytania
Czy lekcja „Strefy czasowe i ustawienia regionalne” jest bezpłatna?
Tak — pełny tekst „Strefy czasowe i ustawienia regionalne” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Strefy czasowe i ustawienia regionalne”?
Prawidłowa obsługa różnic stref czasowych i ustawień regionalnych. Ćwiczysz Swift Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Swift Academy?
Nie wymagamy żadnego doświadczenia. Swift Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Strefy czasowe i ustawienia regionalne”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Swift Academy?
Tak. Każda lekcja Swift Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Typ Date i przedziały czasu
- Calendar i DateComponents
- Formatowanie dat
- Strefy czasowe i ustawienia regionalne