¿Cómo puedo crear un NSDate
del día, mes y año? No parece haber ningún método para hacer esto y han eliminado el método de clase dateWithString
(¿por qué harían eso ?!).¿Cómo crear un objeto de fecha NSDate?
Respuesta
Se podría escribir una categoría para esto. Lo hice, así es como el código es:
// NSDateCategory.h
#import <Foundation/Foundation.h>
@interface NSDate (MBDateCat)
+ (NSDate *)dateWithYear:(NSInteger)year month:(NSInteger)month day:(NSInteger)day;
@end
// NSDateCategory.m
#import "NSDateCategory.h"
@implementation NSDate (MBDateCat)
+ (NSDate *)dateWithYear:(NSInteger)year month:(NSInteger)month day:(NSInteger)day {
NSCalendar *calendar = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDateComponents *components = [[[NSDateComponents alloc] init] autorelease];
[components setYear:year];
[components setMonth:month];
[components setDay:day];
return [calendar dateFromComponents:components];
}
@end
utilizar de esta manera: Respuesta NSDate *aDate = [NSDate dateWithYear:2010 month:5 day:12];
Me hace pensar en la cantidad de código que se necesitará escribir solo para crear una fecha en el objetivo C. – TheLearner
El argumento de defensa sería que un NSDate identifica de forma única un momento en la historia de la Tierra. Hay muchas maneras de escribir una fecha (de uso común en la actualidad, al menos los calendarios gregoriano, hebreo e islámico), por lo que es una cuestión lógica por separado. En Cocoa usas un objeto NSCalendar para eliminar la ambigüedad. Y el costo es que lo que puede querer ser una línea de código termina siendo seis, lo cual, como en la respuesta de fluchtpunkt, es bastante fácil de descifrar en el código de la biblioteca. – Tommy
Puede utilizar NSDateComponents:
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:6];
[comps setMonth:5];
[comps setYear:2004];
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDate *date = [gregorian dateFromComponents:comps];
[comps release];
Esta debería ser la respuesta aceptada – Woodstock
un poco diferente a los ya publicado; si tiene un formato de cadena fijo que le gustaría utilizar para crear las fechas a continuación, puede utilizar algo como:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.locale = [NSLocale localeWithIdentifier:@"en_US_POSIX"];
// see QA1480; NSDateFormatter otherwise reserves the right slightly to
// modify any date string passed to it, according to user settings, per
// it's other use, for UI work
dateFormatter.dateFormat = @"dd MMM yyyy";
// or whatever you want; per the unicode standards
NSDate *dateFromString = [dateFormatter dateFromString:stringContainingDate];
- 1. Crear NSDate Monotouch
- 2. Http Fecha de NSDate
- 3. ¿Cómo INCREMENTO un objeto NSDate en Objective-C
- 4. NSDate - Convertir fecha a GMT
- 5. ¿Cómo puedo inicializar una fecha para NSdate?
- 6. crear un NSDate de una cadena
- 7. Obtenga piezas de fecha de un valor NSDate
- 8. Inicializar NSDate con fecha personalizado
- 9. Crear un nuevo NSDate combinando dos NSDates
- 10. Comparando un NSDate con [NSDate date]
- 11. iPhone OS: ¿Cómo creo un NSDate para una fecha específica?
- 12. Convirtiendo un time_t al objeto NSDate?
- 13. ¿Cómo creo la fecha actual (o cualquier fecha) como un NSDate sin horas, minutos y segundos?
- 14. Inicialice un objeto NSDate con una hora específica
- 15. NSDate - Establecimiento de una fecha futura
- 16. Convertir NSString de una fecha en un NSDate
- 17. ¿Cómo agregar horas a un NSDate?
- 18. Obtener NSDate de NSDate ajustado con la zona horaria
- 19. ¿Convertir una descripción de NSDate en un NSDate?
- 20. ¿Cómo se pueden restar horas de un NSDate?
- 21. ¿Cómo obtener un tiempo desde la cadena de un objeto NSDate?
- 22. Obtener un objeto de fecha (seis meses antes) de otro objeto de fecha
- 23. Restar minutos de NSDate
- 24. ¿Cómo crear un objeto DateTime?
- 25. fecha de Paso de la [fecha NSDate] fuera por un par de horas
- 26. Práctica recomendada de NSDate al crear una fecha sin elemento de tiempo
- 27. ¿Cómo agregar un intervalo de tiempo a un NSDate?
- 28. Cómo obtener NSDate actual para el simulador Fecha? iPhone Sdk
- 29. ¿Cómo puedo obtener la próxima fecha usando NSDate?
- 30. NSDateComponents de un NSDate
dateWithString: se ha ido porque en el pasado se definió para aplicar la heurística de adivinar qué fecha una cadena significaba para describir. Tales conjeturas no siempre fueron particularmente precisas, y definitivamente no era una buena manera de abogar por que las personas escriban sus aplicaciones. Las respuestas a continuación son correctas: filosóficamente, necesitas saber qué calendario estás usando para una fecha que no sea ambigua, por lo que las clases de Cocoa están organizadas en torno a eso. – Tommy