Calendar e DateComponents
Esegui calcoli sulle date tra calendari diversi.
Calendar e DateComponents è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Swift Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Swift Academy include 4 lezioni in totale.
Calendar e DateComponents
Un Calendar interpreta un oggetto Date trasformandolo in unità comprensibili, come anno, mese e giorno. DateComponents contiene questi valori separati.
Il calendario corrente
Calendar.current riflette le impostazioni dell'utente. È il punto di collegamento tra gli istanti grezzi rappresentati da Date e i campi nominati.
import Foundation
let cal = Calendar.current
print("Calendar identifier: \(cal.identifier)")Estrazione dei componenti
dateComponents(_:from:) estrae i campi richiesti da una data e li inserisce in un valore DateComponents.
import Foundation
let cal = Calendar.current
let comps = cal.dateComponents([.year, .month, .day], from: Date())
print("Year is set: \(comps.year != nil)")Lettura di un singolo campo
La scorciatoia component(_:from:) restituisce direttamente un singolo campo come Int.
import Foundation
let cal = Calendar.current
let weekday = cal.component(.weekday, from: Date())
print("Weekday number between 1 and 7: \(1...7 ~= weekday)")Creazione di una data dai componenti
Compili un valore DateComponents e chieda al calendario di produrre la Date corrispondente con 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)")
}Aritmetica delle date
date(byAdding:to:) aggiunge in modo sicuro una quantità di un componente, gestendo automaticamente la diversa durata dei mesi e gli anni bisestili.
import Foundation
let cal = Calendar.current
let now = Date()
if let nextWeek = cal.date(byAdding: .day, value: 7, to: now) {
print(nextWeek > now)
}Aggiunta di più unità
È possibile aggiungere più unità contemporaneamente passando un valore DateComponents che descrive lo scostamento.
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())
}Differenze tra le date
È possibile invertire l'operazione: dateComponents(_:from:to:) restituisce le unità trascorse tra due date.
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)")Inizio del giorno
startOfDay(for:) restituisce la mezzanotte della data nel calendario, una soluzione utile per raggruppare gli eventi per giorno.
import Foundation
let cal = Calendar.current
let midnight = cal.startOfDay(for: Date())
print(midnight <= Date())Verifica dello stesso giorno
isDate(_:inSameDayAs:) indica se due date ricadono nello stesso giorno del calendario.
import Foundation
let cal = Calendar.current
let now = Date()
let soon = now.addingTimeInterval(60)
print(cal.isDate(now, inSameDayAs: soon))Perché usare Calendar
Eseguire calcoli aggiungendo secondi grezzi è errato quando si attraversano i cambi dell'ora legale o i limiti dei mesi. Per i calcoli relativi a giorni, mesi e anni, usi sempre Calendar.
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())")
}Verifica rapida
Quale metodo aggiunge correttamente un mese a una data?
Riepilogo
Calendar converte Date nei campi nominati e viceversa tramite DateComponents. Ha estratto campi, creato date, aggiunto unità con date(byAdding:) e calcolato differenze, comprendendo perché l'aritmetica del calendario sia preferibile al calcolo basato sui secondi grezzi. Prossimo argomento: la formattazione delle date per la visualizzazione.
Domande Frequenti
La lezione «Calendar e DateComponents» è gratuita?
Sì — il testo completo di «Calendar e DateComponents» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Swift Academy, passa a CoddyKit PRO. Il corso Swift Academy include 4 lezioni in totale.
Cosa imparerò in «Calendar e DateComponents»?
Esegui calcoli sulle date tra calendari diversi. Eserciti Swift Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Swift Academy?
Non è richiesta alcuna esperienza precedente. Swift Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Calendar e DateComponents»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Swift Academy?
Sì. Ogni lezione Swift Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Il tipo Date e gli intervalli temporali
- Calendar e DateComponents
- Formattazione delle date
- Fusi orari e impostazioni locali