2010-04-09 73 views
2

我簡單嘗試重新日期:NSDateFormatter只適用於模擬器?

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
NSDate *date = [[NSData alloc] init]; 
//Mon, 05 Apr 2010 14:27:48 -0700 
[formatter setDateFormat:@"E, dd MMM yyyy HH:mm:ss Z"]; 
date = [formatter dateFromString:self.currentItemValue];   

[formatter setDateFormat:@"yyyy-MM-dd HH:mm"]; 
self.currentItem.pubDate = [formatter stringFromDate:date]; 
[formatter release]; 

它的工作原理在模擬器,但在設備上我只得到(空)。

感謝您的幫助!

一些測試:

NSString *string = @"Fri, 12 Dec 2008 18:45:15 -0800"; 
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
dateFormatter setDateFormat:@"EEE, d MMM yyyy HH:mm:ss Z"]; 
NSDate *date = [dateFormatter dateFromString:string]; 
[dateFormatter setDateStyle:NSDateFormatterLongStyle]; 
//here i got (null) on the device but it works on simulator... 
NSLog(@"date %@", [dateFormatter stringFromDate:date]); 
+1

設備設置了哪些區域? – DyingCactus 2010-04-09 15:06:22

+0

我嘗試別的..我編輯我的問題... – phx 2010-04-09 16:55:51

+4

在設備上的設置,常規,國際下,區域格式設置爲什麼?如果它不是英文區域,則需要在日期格式化程序中使用setLocale方法,並將其設置爲en_US,以便它可以解析輸入字符串中的英文日期和月份名稱。例如,請參閱http://stackoverflow.com/questions/1559182/how-do-you-interpret-dates-with-nsdateformatter/1559284#1559284。 – DyingCactus 2010-04-09 17:50:21

回答

6

DyingCactus是正確的!

[dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"] autorelease]]; 

解決了我的問題....謝謝!!!!

+0

[dateFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@「en_GB」]]; – 2014-07-14 19:00:42