Tidszoner och locales
Hantera skillnader i tidszoner och locales korrekt.
Tidszoner och locales är en gratis lektion i Swift Academy på CoddyKit. Detta är lektion 4 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Swift Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Swift Academy innehåller totalt 4 lektioner.
Tidszoner och språkregioner
Samma Date-ögonblick visas på olika sätt runt om i världen. TimeZone och Locale avgör hur det tolkas och visas.
Grunderna i TimeZone
En TimeZone representerar en förskjutning från UTC samt regler för sommartid. TimeZone.current är enhetens tidszon.
import Foundation
let tz = TimeZone.current
print("Identifier present: \(!tz.identifier.isEmpty)")Skapa en specifik tidszon
Skapa en namngiven tidszon med TimeZone(identifier:), till exempel ”America/New_York” eller ”Europe/Istanbul”.
import Foundation
if let tokyo = TimeZone(identifier: "Asia/Tokyo") {
print("Tokyo offset seconds: \(tokyo.secondsFromGMT())")
}Förskjutningar från GMT
secondsFromGMT(for:) ger den aktuella förskjutningen, som kan ändras under året på grund av sommartid.
import Foundation
let utc = TimeZone(identifier: "UTC")!
print("UTC offset is zero: \(utc.secondsFromGMT() == 0)")Tidszoner påverkar kalendrar
Ange en kalenders timeZone så att beräkningar av dagar och timmar använder den regionen i stället för enhetens standardzon.
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)")Tidszoner vid formatering
En Date.FormatStyle kan innehålla en specifik tidszon, så att resultatet återspeglar den regionen oavsett enhetens inställningar.
import Foundation
let style = Date.FormatStyle(date: .omitted, time: .shortened)
.timeZone(TimeZone(identifier: "UTC")!)
let s = Date().formatted(style)
print(!s.isEmpty)Grunderna i Locale
En Locale beskriver språk och regionala konventioner: månadsnamn, veckans första dag samt tal- och datumordning.
import Foundation
let locale = Locale.current
print("Has identifier: \(!locale.identifier.isEmpty)")Skapa en Locale
Skapa en specifik språkregion med Locale(identifier:), till exempel ”fr_FR” eller ”tr_TR”.
import Foundation
let french = Locale(identifier: "fr_FR")
print("French locale id: \(french.identifier)")Locale ändrar resultatet
Om du tillämpar en språkregion på en formatstil ändras månadsnamn och ordningsföljd. Samma datum skrivs på olika sätt på olika språk.
import Foundation
let now = Date()
let style = Date.FormatStyle(date: .long, time: .omitted)
.locale(Locale(identifier: "en_US"))
print(!now.formatted(style).isEmpty)Locale och Calendar tillsammans
Språkregionen påverkar även kalenderns första veckodag och veckonumrering. Kombinera tidszon, språkregion och kalender för helt korrekta resultat.
import Foundation
var cal = Calendar(identifier: .gregorian)
cal.locale = Locale(identifier: "en_US")
print("First weekday: \(cal.firstWeekday)")Lagra i UTC, visa lokalt
Bästa praxis är att lagra och överföra datum i UTC och sedan konvertera dem till användarens tidszon och språkregion först vid visning.
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)")Snabbkontroll
Vilket är det rekommenderade sättet att hantera datum mellan olika regioner?
Sammanfattning
TimeZone anger UTC-förskjutningen och reglerna för sommartid, medan Locale styr språk och regional formatering. Båda kan kopplas till kalendrar och formatstilar. Lagra datum i UTC och konvertera dem till lokal tidszon och språkregion först när de ska visas. Därmed är kursen om datum och kalendrar klar.
Lär dig Swift med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 122
- Lektioner
- 409
Vanliga frågor
Är lektionen ”Tidszoner och locales” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Swift Academy, inklusive ”Tidszoner och locales”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Swift Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Tidszoner och locales”?
Hantera skillnader i tidszoner och locales korrekt. Ni övar på Swift Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Swift Academy?
Du behöver inga förkunskaper. Utbildningen i Swift Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”Tidszoner och locales”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Swift Academy-lektionen?
Ja. Varje Swift Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Typen Date och tidsintervall
- Calendar och DateComponents
- Formatera datum
- Tidszoner och locales