NSDate始终返回UTC

时间:2015-12-28 11:32:32

标签: ios objective-c nsdate localtime

我正在使用NSDateFormatter根据当地时区将NSString转换为NSDate。但它总是以UTC返回。我正在使用此代码:

NSString *dateString = @"28-12-2015 04:58:10 PM";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// this is imporant - we set our input date format to match our input string
// if format doesn't match you'll get nil from your string, so be careful
[dateFormatter setDateFormat:@"dd-MM-yyyy hh:mm:ss a"];
dateFormatter.timeZone = [NSTimeZone localTimeZone];
NSDate *dateFromString = [[NSDate alloc] init];
// voila!
dateFromString = [dateFormatter dateFromString:dateString];

在控制台中我得到了这个:

Printing description of dateFromString:
2015-12-28 11:28:10 +0000

请帮我解决此问题。

3 个答案:

答案 0 :(得分:1)

尝试将时区更改为GMT

NSString *dateString = @"28-12-2015 04:58:10 PM";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy hh:mm:ss a"];    
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
dateFromString = [dateFormatter dateFromString:dateString];

在控制台中我得到了

2015-12-28 16:58:10 +0000

答案 1 :(得分:1)

每次您通过NSDate打印NSLog或打印或采购订单或以GMT方式打印的任何其他方式,都无法更改NSDate以保存所需日期方式。

您可以使用NSDateFormatter更改格式并将日期存储为字符串并使用它。

答案 2 :(得分:-1)

NSDate* date = nil;
NSDateFormatter*dateformatter = [[NSDateFormatter alloc] init];
[dateformatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
date = [dateformatter dateFromString:time];
NSInteger interval = [[NSTimeZone defaultTimeZone] secondsFromGMT];
date = [date dateByAddingTimeInterval:interval];