ios swift macos swift3 nscalendar

ios - Swift: obtenga la fecha del día del año



macos swift3 (2)

No puedes ir por el otro camino. Pasar de una fecha a un día del año descarta toda otra información, solo le queda el día del año (ya no sabe en qué año). Para volver a una fecha completa, debería hacer suposiciones sobre el año en que estuvo el día.

La respuesta que dio @LeoDabus es más sucinta que esta, por lo que quizás sea la mejor opción. Habiendo dicho eso, este es el código que habría utilizado:

let dateComponents = NSDateComponents(); dateComponents.year = 2015 dateComponents.day = day let calendar = NSCalendar.currentCalendar() let date = calendar.dateFromComponents(dateComponents)

Podemos obtener el día del año para la fecha usando la línea siguiente.

let day = cal.ordinalityOfUnit(.Day, inUnit: .Year, forDate: date)

¿Pero cómo podemos obtener la fecha del día del año?


Si conoce el año, puede obtener la fecha de la propiedad DateComponents de la siguiente manera:

extension Calendar { static let iso8601 = Calendar(identifier: .iso8601) } let now = Date() let day = Calendar.iso8601.ordinality(of: .day, in: .year, for: now)! // 121 let year = Calendar.iso8601.ordinality(of: .year, in: .era, for: now)! // 2017 let date = DateComponents(calendar: .iso8601, year: year, day: day).date // "May 1, 2017, 12:00 AM"

o usando DateFormatter

let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy D" if let date = dateFormatter.date(from: "/(year) /(day)") { dateFormatter.dateStyle = .medium dateFormatter.timeStyle = .short dateFormatter.string(from: date) // "May 1, 2017, 12:00 AM" }