2012-01-24 63 views
0

創建的NSDate我有以下NSString從NSString的

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

我想創建該字符串的NSDate。我擡起頭,用dateWithNaturalLanguageString:NSDate類參考和思考:

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的一部分 – 2012-01-24 16:02:49

+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上沒有這樣的方法 – 2012-01-24 16:07:39

+0

您是對的我正在尋找Mac OS X開發者庫而不是iOS開發者庫。詛咒。它是'NSDateFormatter'。 – Stephanie

1

dateWithNaturalLanguageString:類方法只在Mac OS X上實現,而不是在iOS上實現,這就是爲什麼你會收到錯誤。

要達到您要找的內容,您需要NSDateFormatter類。該課程非常繁重,因此您需要先閱讀文檔以瞭解如何最好地使用它。