Question

j'ai ce qui suit NSString:

NSString * dateString = @"2012-01-24T14:59:01Z";

Je veux créer un NSDate de cette chaîne.J'ai recherché le NSDate Référence de classe et idée d'utiliser dateWithNaturalLanguageString::

Crée et renvoie un NSDate objet défini sur la date et l’heure spécifié par une chaîne donnée.

+ (id)dateWithNaturalLanguageString:(NSString *)string

Paramètres chaîne Une chaîne qui contient une spécification familière d’une date, tels que « mardi dernier au dîner », « 15 heures le 31 décembre 2001 », « 31/12/01 », ou « 31/12/01 ». Valeur de retourUn nouveau NSDate objet défini sur l’objet courant Date et heure spécifiées par une chaîne.

Cependant, lorsque j'essaie de l'utiliser comme ceci :

NSDate * date = [NSDate dateWithNaturalLanguageString:dateString];

J'obtiens l'erreur suivante :

Aucune méthode de classe connue pour le sélecteur 'dateWithNaturalLanguageString:'

Était-ce utile?

La solution 4

J'ai trouvé exactement ce que je cherchais ici.Il s'agit d'une date-heure RFC 3339.

- (NSString *)userVisibleDateTimeStringForRFC3339DateTimeString:(NSString *)rfc3339DateTimeString
    // Returns a user-visible date time string that corresponds to the
    // specified RFC 3339 date time string. Note that this does not handle
    // all possible RFC 3339 date time strings, just one of the most common
    // styles.
{
    NSString *          userVisibleDateTimeString;
    NSDateFormatter *   rfc3339DateFormatter;
    NSLocale *          enUSPOSIXLocale;
    NSDate *            date;
    NSDateFormatter *   userVisibleDateFormatter;

    userVisibleDateTimeString = nil;

    // Convert the RFC 3339 date time string to an NSDate.

    rfc3339DateFormatter = [[[NSDateFormatter alloc] init] autorelease];

    enUSPOSIXLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease];

    [rfc3339DateFormatter setLocale:enUSPOSIXLocale];
    [rfc3339DateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"];
    [rfc3339DateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

    date = [rfc3339DateFormatter dateFromString:rfc3339DateTimeString];
    if (date != nil) {

        // Convert the NSDate to a user-visible date string.

        userVisibleDateFormatter = [[[NSDateFormatter alloc] init] autorelease];
        assert(userVisibleDateFormatter != nil);

        [userVisibleDateFormatter setDateStyle:NSDateFormatterShortStyle];
        [userVisibleDateFormatter setTimeStyle:NSDateFormatterShortStyle];

        userVisibleDateTimeString = [userVisibleDateFormatter stringFromDate:date];
    }
    return userVisibleDateTimeString;
}

Autres conseils

La classe NSDateFormatter vous aidera à résoudre ce problème.Et il y a déjà beaucoup de questions à ce sujet, par exemple voici la première : Convertir NSString->NSDate ?

http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/Reference/Reference.html

Essayez d'utiliser le constructeur dateWithString constructeur ou (si cela vous donne une erreur similaire), essayez d'utiliser un NSDateFormatter comme décrit ici.

Le dateWithNaturalLanguageString: La méthode class n'est implémentée que sur Mac OS X, pas sur iOS, c'est pourquoi vous obtenez l'erreur.

Pour réaliser ce que vous recherchez, vous avez besoin du NSDateFormatter classe.Le cours est assez lourd, vous devrez donc d'abord lire la documentation pour comprendre comment l'utiliser au mieux.

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