如何在iOS中将字符串Date转换为NSDate

时间:2015-05-27 05:47:28

标签: ios nsdate

我用Google搜索了很多次,但我对给出的答案并不满意。请任何人都能给出我需要的正确答案。

这是来自DB的检索日期字符串: 2015-05-27 10:19(yyyy-MM-dd HH:mm) 我想转换为NSDate

我的代码如下:

 NSString *date_str = @"2015-05-27 10:19";
 NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm"];
 NSDate *date = [dateFormat dateFromString:date_str];
 NSLog(@"date == %@",date);

但输出为:date == 2015-05-27 04:49:00 +0000

显示 04:49:00 时间,但我的检索时间 10:19

如何从数据库中检索完美时间。

请帮帮我......

2 个答案:

答案 0 :(得分:1)

只需将您的日期转换为GMT时间,如下所示: -

NSString *date_str = @"2015-05-27 10:19";
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[dateFormat setTimeZone:gmt];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm"];
NSDate *date = [dateFormat dateFromString:date_str];

输出是: -

date == 2015-05-27 10:19:00 +0000

获取没有+0000的日期,您可以直接将其存储在NSString中: -

 NSString *s = [dateFormat stringFromDate:date];

输出: -

2015-05-27 10:19

答案 1 :(得分:1)

您正面临着转化的时区问题,因为服务器时间和本地时区可能会有所不同。因此,您需要将时区设置为dateformatter,如

[dateFormater setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];