
服务器给的时间格式:
"Sun Sep 13 11:43:04 +0800 2015"
我的代码:
NSString *timeString = @"Sun Sep 13 11:43:04 +0800 2015";
NSTimeZone *sourceTimeZOne= [NSTimeZone timZoneWithName:@"Asia/Shanghai"];
NSDateFormatter *format = [[NSDateFormatter alloc] init];
format.dateFormat = @"EEE MMM dd HH:mm:ss z yyyy";
format.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
format.timeZOne= sourceTimeZone;
NSDate *date = [format dateFromString:timeString];
NSLog (@"date: %@", date );
打印结果:
date: 2015-09-13 03:43:04 +0000
相差了八个小时,昨晚到今天弄了好长时间都没有弄好~
求指点~
1 jianzong 2015-09-13 12:19:53 +08:00 不是 NSDate 与 NSString 转换的问题吧,字串跟打印结果的时区就是差了 8 小时。 后面的+0000 和+0800 是指时区。 |
3 wezzard 2015-09-13 12:28:47 +08:00 果是正的,一是 GMT +8 一是 UTC ,是相等的。 你可以一下用 NSDateFormatter ,一用完成 NSString -> NSDate 的,一用完成 NSDate -> NSString 的,第一 NSDateFormatter 不要置,因你的 date format 面已提示了,第二 NSDateFormatter 置本地。 |
4 SeanChense 2015-09-13 12:35:50 +08:00 via iPhone 中国在东八区。 |
5 fhefh OP NSString *timeString = @"Sun Sep 13 11:43:04 +0800 2015"; NSTimeZone *sourceTimeZOne= [NSTimeZone timeZoneWithName:@"Asia/Shanghai"]; NSDateFormatter *format = [[NSDateFormatter alloc] init]; format.dateFormat = @"EEE MMM dd HH:mm:ss z yyyy"; format.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; format.timeZOne= sourceTimeZone; NSDate *date = [format dateFromString:timeString]; NSTimeZone *zOne= [NSTimeZone systemTimeZone]; NSInteger interval = [zone secondsFromGMTForDate:date]; NSDate *localDate = [date dateByAddingTimeInterval:interval]; NSLog (@"date: %@", localDate ); 已解决~ 3QS 参考: http://blog.csdn.net/diyagoanyhacker/article/details/7096612 |
6 zerh925 2015-09-13 13:13:08 +08:00 via iPhone format.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]; @“ en_US ”是美国? |