Calendar og DateComponents
Udfør datoberegninger på tværs af kalendere.
Calendar og DateComponents er en gratis Swift Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Swift Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Swift Academy-kurset indeholder 4 lektioner i alt.
Calendar og DateComponents
En Calendar fortolker en Date som menneskelige enheder som år, måned og dag. DateComponents indeholder disse udtrukne værdier.
Den aktuelle kalender
Calendar.current afspejler brugerens indstillinger. Den er bindeleddet mellem rå Date-tidspunkter og navngivne felter.
import Foundation
let cal = Calendar.current
print("Calendar identifier: \(cal.identifier)")Udtræk af komponenter
dateComponents(_:from:) udtrækker de ønskede felter fra en dato og lægger dem i en DateComponents-værdi.
import Foundation
let cal = Calendar.current
let comps = cal.dateComponents([.year, .month, .day], from: Date())
print("Year is set: \(comps.year != nil)")Læsning af et enkelt felt
Genvejen component(_:from:) returnerer ét felt direkte som en Int.
import Foundation
let cal = Calendar.current
let weekday = cal.component(.weekday, from: Date())
print("Weekday number between 1 and 7: \(1...7 ~= weekday)")Oprettelse af en Date fra komponenter
Udfyld en DateComponents, og bed kalenderen om at oprette den tilsvarende Date med date(from:).
import Foundation
var comps = DateComponents()
comps.year = 2024
comps.month = 12
comps.day = 25
let cal = Calendar.current
if let date = cal.date(from: comps) {
print("Built a date: \(date.timeIntervalSince1970 > 0)")
}Datoaritmetik
date(byAdding:to:) tilføjer sikkert en angivet mængde af en enhed og håndterer månedslængder og skudår for dig.
import Foundation
let cal = Calendar.current
let now = Date()
if let nextWeek = cal.date(byAdding: .day, value: 7, to: now) {
print(nextWeek > now)
}Tilføjelse af flere enheder
Du kan tilføje flere enheder på én gang ved at sende en DateComponents, der beskriver forskydningen.
import Foundation
let cal = Calendar.current
var offset = DateComponents()
offset.month = 1
offset.day = 3
if let future = cal.date(byAdding: offset, to: Date()) {
print(future > Date())
}Forskelle mellem datoer
Vend operationen om: dateComponents(_:from:to:) returnerer de forløbne enheder mellem to datoer.
import Foundation
let cal = Calendar.current
let now = Date()
let later = now.addingTimeInterval(3 * 86400)
let diff = cal.dateComponents([.day], from: now, to: later)
print("Days apart: \(diff.day ?? -1)")Dagens begyndelse
startOfDay(for:) returnerer midnat på den pågældende dato i kalenderen, hvilket er praktisk til at gruppere begivenheder efter dag.
import Foundation
let cal = Calendar.current
let midnight = cal.startOfDay(for: Date())
print(midnight <= Date())Kontrol af samme dag
isDate(_:inSameDayAs:) fortæller dig, om to datoer falder på den samme kalenderdag.
import Foundation
let cal = Calendar.current
let now = Date()
let soon = now.addingTimeInterval(60)
print(cal.isDate(now, inSameDayAs: soon))Hvorfor bruge Calendar
Det er forkert at udføre beregninger ved at lægge rå sekunder til, når du krydser overgangen til sommertid eller en månedsgrænse. Brug altid Calendar til beregninger med dage, måneder og år.
import Foundation
let cal = Calendar.current
// Correct: add 1 month, not 30 * 86400 seconds.
if let d = cal.date(byAdding: .month, value: 1, to: Date()) {
print("Added a month correctly: \(d > Date())")
}Hurtigt tjek
Hvilken metode tilføjer korrekt én måned til en dato?
Opsummering
Calendar konverterer mellem Date og navngivne felter via DateComponents. Du har udtrukket felter, oprettet datoer, tilføjet enheder med date(byAdding:), beregnet forskelle og set, hvorfor kalenderaritmetik er bedre end rå sekundaritmetik. Næste emne er formatering af datoer til visning.
Lær Swift med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 122
- Lektioner
- 409
Ofte stillede spørgsmål
Er lektionen “Calendar og DateComponents” gratis?
Ja — alle 3 lektioner i læringssporet Swift Academy, inklusive “Calendar og DateComponents”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Swift Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Calendar og DateComponents”?
Udfør datoberegninger på tværs af kalendere. Du øver dig i Swift Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Swift Academy?
Der kræves ingen tidligere erfaring. Swift Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Calendar og DateComponents”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Swift Academy-lektion?
Ja. Alle Swift Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Typen Date og tidsintervaller
- Calendar og DateComponents
- Formatering af datoer
- Tidszoner og locales