Question

On dirait comme une chose simple mais je ne peux pas sembler trouver un moyen de le faire.

Il serait formidable de voir un couple de différentes méthodes.

Était-ce utile?

La solution

@ La réponse de Chuck est correcte, et conduis-moi au code suivant. Je pensais que je devais partager:

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

Autres conseils

Vous pouvez utiliser cette

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

Espérons que cela va vous aider.

Si vous parlez d'une date spécifique plutôt qu'une date unixy, vous voulez probablement le dateFromComponents: de NSCalendar.

Exemples Swift

Les exemples sont souvent la meilleure façon d'apprendre. Voici quelques exemples.

maintenant

Celui-ci est le plus facile.

let currentDateTime = Date()

20 Février, 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)

1 Avril, 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)

Besoin de précisions ...?

Il existe d'autres façons de créer des dates aussi. Si vous voulez apprendre ceux-ci, ainsi que la façon de affichage une date, puis voir ma réponse plus complète .

Consultez la documentation NSDate. Vous pouvez utiliser le méthode dateFromString: de NSDateFormatter ou méthode dateFromComponents: de NSCalendar

J'ai trouvé ce fil tout en cherchant une réponse à cette question, mais je trouve un bon exemple dans un mon Objective-C livre de programmation Big Nerd Ranch. Crédit pour eux, pas moi.

  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];

Il est ridicule, non?

mi-2013 et Apple toujours n'a pas fourni un moyen simple de définir une valeur NSDate.

Au cours de mon projet actuel iPad, je ne pouvais pas croire que je devais arrêter la productivité pendant un certain temps d'écrire ma propre classe d'aide pour obtenir la valeur de l'année d'un NSDate. Je veux dire, allez, ce sont des choses de base.

Quoi qu'il en soit, voici la classe d'aide je dans mon projet, pour convertir une chaîne en une valeur 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

En utilisant ce code, vous pouvez définir une valeur NSDate en utilisant quelque chose comme:

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

Remarque: cette fonction est basée sur le code pris d'ici: https://stackoverflow.com/a/3968411/391605

Ma solution a été à utiliser le code suivant, mais je trouve que parfois , il ne serait pas juste analyser, et retourneraient 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];

Je me souviens qu'il a lamentablement échoué sur la fonction « 12 octobre 2012 » ... ce qui est la raison pour laquelle j'ai abandonné et utilisé le plus compliqué « parseDateString » ci-dessus.

Mon point est ... attention.

Certaines des fonctions de travail NSDate très basiques juste ne pas correctement ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top