come aggiungere un intervallo di tempo ad una data in Swift
In questo tutorial vedremo come aggiungere un intervallo di tempo ad una data in Swift, per poter creare una data successiva o antecedente ad una certa data, aggiungendo appunto un intervallo di tempo o sottraendo un intervallo di tempo.
Nelle nostre applicazioni capita spesso di dover gestire le date e dover compiere operazioni con le date.
Capita ad esempio di dover creare dei pulsanti di navigazione su un calendario eventi come Vai a settimana seguente oppure Vai a settimana precedente, oppure Vai a giorno precedente, oppure Vai a settimana seguente.
Oppure potremmo voler creare dei pulsanti per vedere appuntamenti presi nell'ora successiva o nell'ora precedente a quella attuale.
In Swift ci sono molti modi per gestire le date, comunque in questa guida ne vedremo due:
- aggiungere o sottrarre un intervallo di tempo ad una data con il metodo date della classe Calendar
- aggiungere o sottrarre un intervallo di tempo ad una data con il metodo addingTimeInterval della classe Date
E' possibile anche lavorare sui componenti di una data usando l'oggetto DateComponents, che vedremo in appositi tutorials.
come aggiungere un intervallo di tempo ad una data in Swift con la classe Calendar
Prima di tutto vediamo come aggiungere un certo intervallo di tempo che possiamo esprimere in minuti, secondi o altra unità di misura di tempo, ad una data.
- Per prima cosa creo una nuova data, crendo una nuova istanza della classe Date()
questa semplice riga di codice crea una nuova data con il giorno di oggi e con l'orario di oggi
// creo una nuova data
let startDate = Date()
- oggi è il 27 luglio 2018, e la data appena creata è la seguente
Jul 27, 2018 at 7:00 AM
- A questo punto creiamo una nuova istanza della classe Calendar, usando il calendario corrente
// instanzio un nuovo calendario
let calendar = Calendar.current
- ora creiamo un intervallo di tempo, che posso esprimere in secondi, in minuti, in ore, giorni etc
basterà poi specificare l'unità di misura nella riga successiva (mediante .minute .hour .day etc)
IMPORTANTE
L'intervallo di tempo può essere un numero positivo o negativo (con segno -)
Aggiungendo un intervallo di tempo negativo ad una data, si andrà a creare una data precedente nel tempo a quella data.
let intervallo_di_tempo_in_minuti = 10
let intervallo_di_tempo_in_minuti_negativo = -10
- ora mediante il metodo .date della classe Calendar posso aggiungere l'intervallo di tempo appena creato, alla data startDate.
// creo nuova data - aggiungendo 10 minuti
let nuova_data_seguente = calendar.date(byAdding: .minute, value: intervallo_di_tempo_in_minuti, to: startDate)
- la costante nuova_data_seguente contiene il seguente oggetto di tipo Date:
Jul 27, 2018 at 8:10 AM
- ora allo stesso modo creiamo una nuova data precedente nel tempo, sottraendo un intervallo di tempo alla data startDate
// creo nuova data - sottraendo 10 minuti
let nuova_data_precedente = calendar.date(byAdding: .minute, value: intervallo_di_tempo_in_minuti_negativo, to: startDate)
- la costante nuova_data_precedente contiene il seguente oggetto di tipo Date:
Jul 27, 2018 at 6:50 AM