2012-01-24 5 views
0

У меня есть следующие NSString:Создание NSDate из NSString

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

Я хочу, чтобы создать NSDate из этой строки. Я посмотрел Reference NSDate класса и мысли с помощью dateWithNaturalLanguageString::

Creates and returns an NSDate object set to the date and time specified by a given string.

+ (id)dateWithNaturalLanguageString:(NSString *)string

Parameters string A string that contains a colloquial specification of a date, such as “last Tuesday at dinner,” “3pm December 31, 2001,” “12/31/01,” or “31/12/01.” Return Value A new NSDate object set to the current date and time specified by string.

Однако, когда я пытаюсь использовать его как это:

NSDate * date = [NSDate dateWithNaturalLanguageString:dateString]; 

Я получаю следующее сообщение об ошибке:

No known class method for selector 'dateWithNaturalLanguageString:'

+0

Состояние документа, которое: «Это может дать неожиданные результаты, и его использование сильно обескуражено.» В разделе обсуждения. Также 'dateString' действительно является естественной строкой языка? этот метод не входит в iOS SDK –

+0

Возможный дубликат http://stackoverflow.com/q/4380381/1114171 –

+0

Возможно, нет ... Не получилось попробовать все равно. Вы рекомендуете какое-либо другое решение? – Dimme

ответ

1

Найдено точно, что я искал here. Это дата-время 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; 
} 
1

Попробуйте использовать конструктор конструктор dateWithString или (если это дает подобную ошибку), попробуйте использовать NSDateFormatter в качестве описанный here.

+0

нет такого метода на iOS –

+0

Вы правы Я искал библиотеку разработчиков Mac OS X вместо библиотеки разработчиков iOS. Проклятия. 'NSDateFormatter' это. – Stephanie

1

Метод класса dateWithNaturalLanguageString: реализуется только на Mac OS X, а не на iOS, поэтому вы получаете ошибку.

Для получения то, что вы ищете, вам нужен класс NSDateFormatter. Класс довольно тяжелый, поэтому сначала вы должны прочитать документацию, чтобы понять, как лучше всего использовать его.

 Смежные вопросы

  • Нет связанных вопросов^_^