¿Cómo obtengo los NSDateComponents de un único NSDate? No quiero los componentes de la diferencia entre 2 fechas, solo los segundos, minutos, horas, día, mes y año de NSDate.NSDateComponents de un NSDate
21
A
Respuesta
38
Hay un ejemplo en el Apple docs, el Listado 3: Conseguir componentes de una fecha:
NSDate *today = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *weekdayComponents =
[gregorian components:(NSDayCalendarUnit |
NSWeekdayCalendarUnit) fromDate:today];
NSInteger day = [weekdayComponents day];
NSInteger weekday = [weekdayComponents weekday];
Tenga en cuenta que usted tiene que 'o' junto al calendar units que desea en la llamada del método components
.
6
utilizando el método de NSCalendar:
- (NSDateComponents *)components:(NSUInteger)unitFlags fromDate:(NSDate *)date
como:
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSDate *date = [NSDate date];
NSCalendar * cal = [NSCalendar currentCalendar];
NSDateComponents *comps = [cal components:unitFlags fromDate:date];
0
en Swift 2.x los componentes que desea se pasan de esta manera.
let gregorianCalendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)
let weekdayHourMinutes = gregorianCalendar?.components([.Weekday, .Hour, .Minute], fromDate: date)
2
Según Apple API para desarrolladores de referencia, tiene DateComponents
second
, propiedades minute
, hour
, day
, month
, year
instancia.
El siguiente código de 3 juegos Swift muestra cómo obtener segundos, minutos, horas, día, mes y año componentes de una instancia utilizando Date
DateComponents
:
import Foundation
var calendar = Calendar(identifier: .gregorian)
calendar.timeZone = TimeZone(abbreviation: "CET")!
let date = Date()
// Get seconds, minutes, hours, day, month and year
let components = calendar.dateComponents([.second, .minute, .hour, .day, .month, .year], from: date)
let seconds = components.second
let minutes = components.minute
let hours = components.hour
let day = components.day
let month = components.month
let year = components.year
// Print components
print(String(reflecting: seconds)) // prints Optional(33)
print(String(reflecting: minutes)) // prints Optional(42)
print(String(reflecting: hours)) // prints Optional(22)
print(String(reflecting: day)) // prints Optional(17)
print(String(reflecting: month)) // prints Optional(12)
print(String(reflecting: year)) // prints Optional(2016)
/* ... */
// Set a formatter in order to display date
let formatter = DateFormatter()
formatter.dateStyle = .short
formatter.timeStyle = .long
formatter.timeZone = TimeZone(abbreviation: "CET")
formatter.locale = Locale(identifier: "fr_FR")
print(formatter.string(from: date)) // prints 17/12/2016 22:42:33 UTC+1
Cuestiones relacionadas
- 1. NSDate from NSDateComponents
- 2. NSDateComponents return nil
- 3. Componentes de NSDateComponents: fromDate y Zonas horarias
- 4. NSDate restar un mes
- 5. Inicialice un objeto NSDate con una hora específica
- 6. Comparando un NSDate con [NSDate date]
- 7. ¿Convertir una descripción de NSDate en un NSDate?
- 8. NSDateComponents - método del día que devuelve el día incorrecto
- 9. NSDate, comparando dos fechas
- 10. ¿Cómo obtener NSDate para las 00:00 del día de [NSDate date]?
- 11. NSDate - hace un año, dilema
- 12. Compare NSDate para hoy o ayer
- 13. Generar NSDate a partir del día, mes y año
- 14. crear un NSDate de una cadena
- 15. ¿Cómo crear un objeto de fecha NSDate?
- 16. NSPredicar: filtrar objetos por día de la propiedad de NSDate
- 17. Obtener NSDate de NSDate ajustado con la zona horaria
- 18. NSNúmero de NSDate
- 19. Http Fecha de NSDate
- 20. Cadena relativa de NSDate
- 21. Descripción Cadena de NSDate
- 22. Restar minutos de NSDate
- 23. ¿cómo puedo agregar un minuto en NSDate de iphone actual y guardarlo en NSDate?
- 24. ¿Cómo puedo generar rangos de fechas convenientes basados en un NSDate dado?
- 25. ¿Cómo agregar horas a un NSDate?
- 26. Convirtiendo un time_t al objeto NSDate?
- 27. Obtener NSDate para hoy con 00:00:00 como hora
- 28. Crear un nuevo NSDate combinando dos NSDates
- 29. ¿Cómo convertir un NSString en NSDate?
- 30. ¿Cómo agregar un intervalo de tiempo a un NSDate?
me ganas, ja! +1 –
@martin clayton, Hola, he establecido un horario especial, horas y segundos para NSDateComponents y ahora quiero volver a formar una fecha con esos NSDateComponents. ¿Cómo puedo hacer eso? –