Pregunta

Parece que una cosa simple, pero me parece que no puede encontrar una manera de hacerlo.

Sería muy bueno ver a un par de métodos diferentes.

¿Fue útil?

Solución

@ respuesta de Chuck es correcta, y me lleva al siguiente código. Pensé en compartir:

NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:10];
[comps setMonth:10];
[comps setYear:2010];
NSDate *date = [[NSCalendar currentCalendar] dateFromComponents:comps];

Otros consejos

Puede utilizar este

NSString *dateString = @"03-Sep-11";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"dd-MMM-yy";
NSDate *date = [dateFormatter dateFromString:dateString];

Espero que esto le ayudará a cabo.

Si usted está hablando de una fecha del calendario específico en lugar de una fecha UNIXy, es probable que desee dateFromComponents: de NSCalendar.

Swift Ejemplos

Los ejemplos son a menudo la forma más fácil de aprender. Aquí están algunos ejemplos.

ahora

Éste es el más fácil.

let currentDateTime = Date()

20 de febrero 2017

// Specify date components
var dateComponents = DateComponents()
dateComponents.year = 2017
dateComponents.month = 2
dateComponents.day = 20

// Create date from components
let userCalendar = Calendar.current // user calendar
let dateThisPostWasUpdated = userCalendar.date(from: dateComponents)

01 de abril 1976

// Specify date components
var dateComponents = DateComponents()
dateComponents.year = 1976
dateComponents.month = 4
dateComponents.day = 1

// Create date from components
let userCalendar = Calendar.current // user calendar
let appleFoundedDate = userCalendar.date(from: dateComponents)

¿Necesita más detalles ...?

Hay otras maneras de crear fechas, también. Si quieres aprender los, así como la forma de pantalla una fecha, a continuación, ver mi respuesta más completa .

Consulte la documentación de NSDate . Puede utilizar el dateFromString: método de NSDateFormatter o la dateFromComponents: método de NSCalendar

He encontrado este hilo, mientras que en busca de una respuesta a esta pregunta, pero luego me encontré con un buen ejemplo de una mi gran Nerd Ranch Objective-C libro de programación. Crédito a ellos, no yo.

  NSDateComponents *myBDay  =[[NSDateComponents alloc] init];
    [myBDay setDay:22];
    [myBDay setMonth: 04];
    [myBDay setYear: 1984];
    [myBDay setHour:9];
    [myBDay setMinute:25];
    [myBDay setSecond:35];

    NSCalendar *g = [[ NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    NSDate *dateOfBirth = [g dateFromComponents:myBDay];

Es ridículo, ¿verdad?

mediados de 2013 y Apple Todavía no ha proporcionado una manera fácil de configurar un valor NSDate.

Durante mi proyecto actual iPad, no podía creer que tuviera a la productividad parada durante un tiempo para escribir mi propia clase de ayuda para obtener el valor de un año NSDate. Quiero decir, vamos, esto es algo básico.

De todos modos, aquí está la clase de ayuda que se utiliza en mi proyecto, para convertir una cadena en un valor NSDate:

@implementation DateHelper

+(NSDate*)parseDateString:(NSString *)dateString
{
    NSDateFormatter *rfc3339TimestampFormatterWithTimeZone = [[NSDateFormatter alloc] init];
    [rfc3339TimestampFormatterWithTimeZone setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
    [rfc3339TimestampFormatterWithTimeZone setDateFormat:@"MMM dd, yyyy"];

    NSDate *theDate = nil;
    NSError *error = nil;
    if (![rfc3339TimestampFormatterWithTimeZone getObjectValue:&theDate forString:dateString range:nil error:&error]) {
        NSLog(@"Date '%@' could not be parsed: %@", dateString, error);
    }

    return theDate;
}

@end

El uso de este código, se puede establecer un valor NSDate usando algo como:

NSDate* date = [DateHelper parseDateString:@"Jul 16, 2013"];

Nota: esta función se basa en código tomado de aquí: https://stackoverflow.com/a/3968411/391605

Mi solución habían sido para utilizar el código siguiente, pero he encontrado que a veces , que sólo sería no analizar, y volvería nil .

//  Take a date string in the format "Oct 23, 2013", and convert it into a NSDate value
//  THIS DOESN'T WORK !  DON'T TRUST THIS CODE !!
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMM dd, yyyy"];
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

NSDate* date = [formatter dateFromString:dateString];

Recuerdo que fracasó estrepitosamente en "12 Oct 2012" ... por lo que me di por vencido y se utiliza la función más complicada "parseDateString" se muestra arriba.

Mi punto es ... ten cuidado.

Algunas de las funciones muy básicas NSDate simplemente no funcionan correctamente ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top