我使用以下代码在我的iphone项目中获得GMT格式的时间。但我想将其转换为本地时间。请提出一些想法来解决这个问题。提前谢谢。
NSDate *currentTime = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[dateFormatter setTimeZone:gmt];
NSString *resultString = [dateFormatter stringFromDate: currentTime];
[dateFormatter release];
我使用GMT格式将其发送到服务器。所以首先我只想要GMT格式。我想转换它。
答案 0 :(得分:4)
使用此方法将当前时间转换为GMT
+(NSDate *)getCurrentGMTTime
{
NSTimeZone *tz = [NSTimeZone defaultTimeZone];
NSInteger seconds = -[tz secondsFromGMTForDate: [NSDate date]];
return [NSDate dateWithTimeInterval: seconds sinceDate: [NSDate date]];
}
然后使用此方法将GMT时间转换回本地时间。将GMT NSDate传递给此方法。
+(NSDate *)getLocalTimeWithDate:(NSDate*)date
{
NSTimeZone *tz = [NSTimeZone defaultTimeZone];
NSInteger seconds = [tz secondsFromGMTForDate: date];
return [NSDate dateWithTimeInterval:seconds sinceDate: date];
}
答案 1 :(得分:2)
NSDate是UTC / GMT的固定时间点。
您应始终以这种方式存储您的NSDates。当您显示时间时,您会担心区域设置和时区。
NSDate与您显示 NSDate的方式之间存在差异。
答案 2 :(得分:1)
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm";
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[dateFormatter setTimeZone:gmt];
NSString *timeStamp = [dateFormatter stringFromDate:[NSDate date]];
[dateFormatter release];
答案 3 :(得分:0)
你可以使用NSTimeZone *currentTimeZone = [NSTimeZone localTimeZone];
[dateFormatter setTimeZone:currentTimeZone];
获取当地时区
或 - 取自评论
NSDate *currentTime = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[dateFormatter setTimeZone:gmt];
NSString *gmtDateTime = [dateFormatter stringFromDate: currentTime];
NSTimeZone *currentTimeZone = [NSTimeZone localTimeZone];
[dateFormatter setTimeZone:currentTimeZone];
NSString *currentDateTime = [dateFormatter stringFromDate: currentTime];
[dateFormatter release]
答案 4 :(得分:0)
只需替换此行 -
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
with -
NSTimeZone *gmt = [NSTimeZone localTimeZone];
NSDate *currentTime = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[dateFormatter setTimeZone:gmt];
NSString *resultString = [dateFormatter stringFromDate: currentTime];
NSTimeZone *localTZ = [NSTimeZone localTimeZone];
[dateFormatter setTimeZone:localTZ];
NSString *localTimeString = [dateFormatter stringFromDate: currentTime];
[dateFormatter release];
答案 5 :(得分:0)
[dateFormatter setLocale:[NSLocale systemLocale]];
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
NSString *resultString = [dateFormatter stringFromDate: currentTime];
[dateFormatter release];