将GMT时间转换为本地
我在使用以下代码的iphone项目中获得了GMT格式的时间。但我想将其转换为当地时间。请提供一些解决此问题的想法。将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格式将数据发送到server.So首先我想在GMT格式only.Afterthat我想把它转换。
使用此方法在目前的时间转换为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];
}
可以使用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]
上午我使用GMT格式发送它到服务器。所以首先我希望它在GMT格式only.Afterthat我想转换它。 – Madhumitha 2013-05-08 07:53:07
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]; – 2013-05-08 07:55:34
您可以在上述两个日期中使用上面的代码块。 – 2013-05-08 07:57:08
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];
只需更换这条线 -
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
与 -
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];
...但是不要叫它'gmt'那么:-) – 2013-05-08 07:53:05
如果你需要先在格林威治标准时间然后使用你的代码,然后再设置时区localTimeZone – saadnib 2013-05-08 07:54:57
[dateFormatter setLocale:[NSLocale systemLocale]];
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
NSString *resultString = [dateFormatter stringFromDate: currentTime];
[dateFormatter release];
一个NSDate是在UTC/GMT时间的一个固定点。
您应该始终以这种方式存储您的NSDates。当你显示时间时,你担心区域设置和时区。
NSDate和您的方式显示 NSDate是有区别的。
我们如何使用第二个代码在函数无效? – Kingofmit 2015-06-25 14:42:46
请多解释一下你的问题,你想在这里。谢谢 – 2015-06-25 18:48:45
我有一个NSString = @“2015-06-25T18:00:00Z”这是GMT时间!我得到我的本地时间(这意味着如何将上面的NSString转换为另一个NSString与iPhone的本地时区)?我怎么用你的方法来做到这一点? – Kingofmit 2015-06-25 18:53:15