2009-11-27 60 views
1

我想將NSString轉換爲NSDate。如果iPhone地區設置爲英語(美國),它的工作原理非常完美,但是當我將其設置爲瑞典語時,則不會。如何在將NSString轉換爲NSDates時避免語言問題?

我的代碼:

[...]  
// Get the date from the post 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"eee, dd MMM yyyy HH:mm:ss ZZZ"]; 

    int storyIndex = [indexPath indexAtPosition: [indexPath length] - 1]; 

    NSDate *dateFromString = [[[NSDate alloc] init] retain]; 
    dateFromString = [dateFormatter dateFromString:[[stories objectAtIndex:storyIndex] objectForKey: @"date"]]; 

    NSLog(@"String: %@", [[stories objectAtIndex:storyIndex] objectForKey: @"date"]); 
    NSLog(@"date From string: %@", dateFromString); 

    // Set date string 
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    [formatter setDateFormat:@"YYYY-MM-dd HH:MM"]; 
    NSString *stringFromDate = [formatter stringFromDate:dateFromString]; 
    stringFromDate = [stringFromDate stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 

    NSLog(@"StringDate: %@", [dateFormatter stringFromDate:[[NSDate alloc] init]]); 
[...] 

登錄結果:

[...] 
2009-11-27 16:13:22.804 sportal.se[755:4803] String: Fri, 27 Nov 2009 12:56:13 +0100 


2009-11-27 16:13:22.812 sportal.se[755:4803] date From string: (null) 
2009-11-27 16:13:22.819 sportal.se[755:4803] StringDate: fre, 27 nov 2009 16:13:22 +0100 
[...] 

這裏的問題是,它希望 「FRE,2009年11月27日... +0100」,但它得到「週五, 2009年11月27日... +0100「。我怎樣才能解決這個問題?

+2

'[[[NSDate的頁頭]的init]保留]':頁頭已經做了保留,所以你保留太多 – user102008 2010-12-03 23:24:09

回答

6

NSDateFormatter有一個屬性locale。嘗試:

dateFormatter.locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] 
                    autorelease]; 
+1

謝謝你的提示。我得到它的工作使用: \t [dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@「en_US」]]; /Paul Peelen – 2009-11-27 16:30:44

+0

我不太清楚'systemLocale',但希望它能工作。 :) – 2009-11-27 16:46:13

+1

順便說一句:該代碼中有內存泄漏,你應該autorelease語言環境。 – 2009-11-27 16:47:15

相關問題