2010-05-17 50 views
0

我有一個stringdate 16-MAY-2010 23:04:44我需要轉換爲gmt時區,所需輸出是17-May-2010 12:03:03。時區轉換表格字符串datedate

我使用日期格式化轉換,但我得到的結果是不是我required.I我發送代碼,請讓我知道的格式,如果我這樣做正確與否

下面是代碼:

NSString *timeStamp = [format stringFromDate:[NSDate date]]; 
NSString *output = [timeConv dateStringFromString:timeStamp]; 

- (NSString *)dateStringFromString:(NSString *)sourceString 
{  
    NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
    [dateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4]; 
    [dateFormatter setDateFormat:@"dd-MMMM-yyyy HH:MM:ss"]; 
    NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; 
    [dateFormatter setTimeZone:gmt]; 
    NSDate *date = [dateFormatter dateFromString:sourceString]; 

    return [dateFormatter stringFromDate:date]; 
} 

我得到的是沒有轉換的舊時間。所以請讓我知道正確的解決方案。

回答

1

我不知道任何可可,但如果我正確理解你的代碼,你永遠不會告訴解析器你的原始字符串不是GMT,而是GMT-1。根據你自己的代碼

(並再次,沒有可可粉的知識),這是我認爲你需要做的:

NSTimeZone *gmtminusone = [NSTimeZone timeZoneForSecondsFromGMT:-3600.0]; 
[dateFormatter setTimeZone:gmtminusone]; 
NSDate *date = [dateFormatter dateFromString:sourceString]; 
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; 
[dateFormatter setTimeZone:gmt]; 
return [dateFormatter stringFromDate:date]; 

如果不馬上工作,也許它給你想要做什麼的想法:

  1. 解析日期格式化程序設置爲GMT-1的字符串以輸出日期。
  2. 使用設置爲GMT的日期格式化程序解析日期以輸出字符串。
+0

「GMT-1」不是時區縮寫。提問者需要直接指定它所在的任何時區,無論是按名稱還是按偏移量。 – 2010-05-17 07:17:05

+0

@Peter,正如我所說的,我不知道任何可可 - 它包括哪些時區縮寫可用。但是就我的例子而言,OP有希望能夠找出無論如何要做的事情。如果你知道可可,並且知道那條線應該替代做同樣的事情,請隨時編輯我的帖子。 – 2010-05-17 07:40:29

+0

謝謝托馬斯我得到了解決方案 – Kishore 2010-05-18 06:59:58

1

日期字符串不包括時區規範,所以依靠你的日期格式來告訴它這是在哪個時區。

NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; 
[dateFormatter setTimeZone:gmt]; 
NSDate *date = [dateFormatter dateFromString:sourceString]; 

你告訴它的輸入字符串在GMT。

您需要告訴日期格式化程序日期所在的時區。一旦完成了這些操作,您可以告訴格式化程序將字符串轉換爲日期(dateFromString:),並且它會將字符串解釋爲表示在該時區的日期。

然後,一旦解釋了日期,將格式器的時區切換到GMT,並輸出字符串(stringFromDate:)。該字符串將表示轉換爲GMT的日期。