2014-07-14 71 views
2

我有以下日期的NSString:如何字符串日期轉換成NSDate的與NSDateFormatter

Thu May 29 14:22:40 UTC 2014 

我試圖把它與下面的代碼轉換成NSDate的:

NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; 
fmt.dateFormat =     @"EEE MMM d HH:mm:ss zzz yyyy"; 
NSDate *utc = [fmt dateFromString:@"Thu May 29 14:22:40 UTC 2014"]; 
NSLog(@"UTC Date:%@:", utc); 

結果是 我試了幾次dateFormat正則表達式,但沒有運氣。

我在這裏錯過了什麼?

+0

不同操作系統版本中的日期格式更改,您在哪裏運行? – mxb

+4

是不是2014年5月5日星期一? – Anna

+0

日期格式化程序通常不喜歡解析星期幾。更好地將其排除。 (尤其是5月5日是星期一,5月29日是星期二)。 –

回答

5

使用NSDataDetector類NSRegularExpression的子類,它接受一個未知日期的字符串,如果它發現匹配,則將其轉換爲NSDate對象。

NSError *error; 
    NSDataDetector *data = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeDate error:&error]; 
    NSString *dateRaw = @"Thu May 29 14:22:40 UTC 2014"; // your date 

    NSDate *date = [data firstMatchInString:dateRaw 
            options:NSMatchingReportCompletion 
             range:NSMakeRange(0, dateRaw.length)].date; 

    NSLog(@"Date: %@", date); 
+0

謝謝@ shams-ahmed。這非常有幫助! – raven99

+0

不錯!雖然它不能解析日期字符串,如「2012-04-11T18:34:19 + 07:00」。在這種情況下,最好使用'NSDateFormatter'。 – Hlung

相關問題