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"
}