Saltar al contenido

Cómo obtener la fecha de inicio y la fecha de finalización del mes actual (Swift 3)

Bienvenido a nuestra página, en este lugar vas a hallar la solucíon que estás buscando.

Solución:

Debes escribir este código simple:

let dateFormatter = DateFormatter()
let date = Date()
dateFormatter.dateFormat = "dd-MM-yyyy"

Para la fecha de inicio:

let comp: DateComponents = Calendar.current.dateComponents([.year, .month], from: date)
let startOfMonth = Calendar.current.date(from: comp)!
print(dateFormatter.string(from: startOfMonth))

Para la fecha de finalización:

var comps2 = DateComponents()
comps2.month = 1
comps2.day = -1
let endOfMonth = Calendar.current.date(byAdding: comps2, to: startOfMonth)
print(dateFormatter.string(from: endOfMonth!)) 

Esto es lo que estoy usando. Bastante simple pero funciona.

extension Calendar 

func dayOfWeek(_ date: Date) -> Int 
    var dayOfWeek = self.component(.weekday, from: date) + 1 - self.firstWeekday

    if dayOfWeek <= 0 
        dayOfWeek += 7
    

    return dayOfWeek


func startOfWeek(_ date: Date) -> Date 
    return self.date(byAdding: DateComponents(day: -self.dayOfWeek(date) + 1), to: date)!


func endOfWeek(_ date: Date) -> Date 
    return self.date(byAdding: DateComponents(day: 6), to: self.startOfWeek(date))!


func startOfMonth(_ date: Date) -> Date 
    return self.date(from: self.dateComponents([.year, .month], from: date))!


func endOfMonth(_ date: Date) -> Date 
    return self.date(byAdding: DateComponents(month: 1, day: -1), to: self.startOfMonth(date))!


func startOfQuarter(_ date: Date) -> Date 
    let quarter = (self.component(.month, from: date) - 1) / 3 + 1
    return self.date(from: DateComponents(year: self.component(.year, from: date), month: (quarter - 1) * 3 + 1))!


func endOfQuarter(_ date: Date) -> Date 
    return self.date(byAdding: DateComponents(month: 3, day: -1), to: self.startOfQuarter(date))!


func startOfYear(_ date: Date) -> Date 
    return self.date(from: self.dateComponents([.year], from: date))!


func endOfYear(_ date: Date) -> Date 
    return self.date(from: DateComponents(year: self.component(.year, from: date), month: 12, day: 31))!


Cómo utilizar

let calendar: Calendar = Calendar.current
let startDate = calendar.startOfMonth(Date())
print("startDate :: (startDate)")

Con Swift 3 e iOS 10, la forma más fácil que encontré para hacer esto es Calendar‘s dateInterval(of:for:):

guard let interval = calendar.dateInterval(of: .month, for: Date()) else  return 

Luego use un formateador de fechas para imprimir las fechas:

let formatter = DateFormatter()
formatter.dateFormat = "dd-MM-yyyy"
let dateText = formatter.string(from: interval.start)

Recuerda algo, que tienes concesión de reseñar si diste con la respuesta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *