0Pricing
Swift Academy · Lekcja

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

  1. Typ Date i przedziały czasu
  2. Calendar i DateComponents
  3. Formatowanie dat
  4. Strefy czasowe i ustawienia regionalne
← Powrót do Swift Academy