我有一个stringdate 16-MAY-2010 23:04:44我需要转换为gmt时区,这是需要的输出是17-May-2010 12:03:03。
我使用日期格式化程序进行转换,但我得到的结果不是我要求的格式。我发送的代码请告诉我,如果我做得对不对
以下是代码:
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];
}
我得到的输出是没有转换的旧时间。所以请让我知道正确的解决方案。
答案 0 :(得分: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 :(得分:1)
日期字符串不包含时区规范,因此日期格式化程序依赖于您告诉它它所在的时区。
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; [dateFormatter setTimeZone:gmt]; NSDate *date = [dateFormatter dateFromString:sourceString];
你告诉它输入字符串是GMT。
您需要告诉日期格式化程序日期所在的时区。完成后,您可以告诉格式化程序将字符串转换为日期(dateFromString:
),它将解释string表示该时区的日期。
然后,一旦你有了如此解释的日期,将格式化程序的时区切换为GMT并让它输出字符串(stringFromDate:
)。该字符串将表示转换为GMT的日期。