Digamos que tengo un programa que les recuerda a los usuarios sus citas, desde la fecha actual hasta la fecha de la cita, quiero saber si una fecha en particular es una semana a la cita o un mes a la cita.

var startDate = startDate
let calendar = Calendar.current

let fmt = DateFormatter()
fmt.dateFormat = "yyyy-MM-dd"

while startDate <= endDate {

    var  newDate = calendar.date(byAdding: .day, value: 1, to: startDate)!


    if newDate is a month to endDate {

        //schedule reminder
    }

    if newDate is a week to endDate{

        //schedule reminder
    }

¿Cómo puedo verificar si la fecha actual es una semana / mes a la cita?

0
BigFire 28 feb. 2020 a las 19:15

2 respuestas

La mejor respuesta

No necesita usar ninguna comparación de fechas, simplemente puede generar las fechas de notificación usando Calendar.date(byAdding:value:to:) y simplemente pasando los componentes correctos. Para establecer la fecha 1 semana / mes antes de endDate, pase -1 al valor.

let oneWeekBeforeAppointment = Calendar.current.date(byAdding: .weekOfYear, value: -1, to: endDate)!
let oneMonthBeforeAppointment = Calendar.current.date(byAdding: .month, value: -1, to: endDate)!
0
Dávid Pásztor 28 feb. 2020 a las 16:26

Prueba esto para calcular la duración en días

func DateFormat() -> DateFormatter {
  let dateFormatter = DateFormatter()
  dateFormatter.dateFormat = "dd/MM/yyyy"
  dateFormatter.timeZone = TimeZone(abbreviation: "GMT")
  return dateFormatter
}

var appointementDate: Date?
var today = Date()

appointementDate = DateFormat().date(from: "22/02/2020")
today = DateFormat().date(from: DateFormat().string(from: today))!

let timeInterval = Int(exactly: (today.timeIntervalSince(appointementDate!))) ?? 0
print("\(timeInterval/86400) days left")
0
RJ168 28 feb. 2020 a las 16:48