Ios 字符串日期和当前时间之间的时间(GMT)

Ios 字符串日期和当前时间之间的时间(GMT),ios,objective-c,nsdate,Ios,Objective C,Nsdate,我想查找“yyyy-MM-dd'T'HH:MM:ss”格式的日期(示例:“2014-02-03T11:28:00”)和当前时间(以GMT为单位,因为字符串以GMT为单位)之间的时间(以分钟为单位)。我尝试了 NSDateFormatter *formatter; [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"]; NSDate *now = [NSDate date]; NSDate *trackingDataDate = [formatt

我想查找“yyyy-MM-dd'T'HH:MM:ss”格式的日期(示例:“2014-02-03T11:28:00”)和当前时间(以GMT为单位,因为字符串以GMT为单位)之间的时间(以分钟为单位)。我尝试了

 NSDateFormatter *formatter;
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];

NSDate *now = [NSDate date];
NSDate *trackingDataDate = [formatter dateFromString:timeStamp];

NSTimeInterval distance = [now timeIntervalSinceDate:trackingDataDate];
double timeInMinutes = distance / 60;

但这会返回NaN。我的代码有什么问题,如何获取事件之间的时间?

简单的错误。您错过了NSDateFormatter的分配。请在下面的行中添加,而不是
NSDateFormatter*formatter;
,它工作正常

NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
更新:根据您的评论,有关转换为GMT日期的信息,请参见下面的代码

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss";

NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[dateFormatter setTimeZone:gmt];
NSString *timeStamp = [dateFormatter stringFromDate:[NSDate date]];
试试这个:

NSString* string=@"26-01-2014";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-mm-yyyy"];
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[dateFormatter setTimeZone:gmt];

NSDate *date = [dateFormatter dateFromString:string];
NSLog(@"Date = %@",date);

您的now trackingDataDate NSDate有效吗?设置一个断点并验证它否:D它记录为空。我的时间戳字符串是正确的。哦,这很简单。现在我得到了真实的日期,但是+1小时。如何让NSDate日期执行GMT,而不是系统时间?@OscarApeland查看Nvm我已修复,我自己也找到了答案:)谢谢!