2011-07-11 36 views
2

我使用這個代碼將字符串轉換爲日期:dateFromString和莫斯科時間

+(NSDate*)dateTexteFromString:(NSString*)someString 
{ 
    NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
    NSLocale *locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]; 
    [df setLocale:locale]; 
    [df setDateFormat:@"EEE, dd MMM yyyy hh:mm a zzz"]; 
    NSDate *myDate = [df dateFromString: someString]; 
    [df release]; 
    return myDate; 
} 

它工作正常的大多數日期,但是這一次我逼瘋了:

星期二, 2011年7月12日12:28 MSD

(莫斯科)。我該怎麼辦?還有其他無法識別的時區嗎?我不能嘗試在全世界所有時區:(

回答

4

使用MSKS代替MSD或找到你所需要的做的:

  1. 首先使用查找可用的時區名稱

    NSLog(@"%@", [NSTimeZone knownTimeZoneNames]); 
    
  2. 然後複製你想要的(我複製歐洲/莫斯科)的名稱,並使用此代碼找到縮寫

    NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"Europe/Moscow"]; 
    NSLog(@"%@",[timeZone abbreviation]); 
    
+0

謝謝,我會試試看。但就我而言,我想解析一個我不知道TimeZone的日期。大部分時間沒問題,但有時TimeZone是「異國情調」,並且它失敗... –

+0

在這種情況下,您只能檢查日期是否爲空,那麼時區可能無效。 –