Xcode 将NSString转换为NSDate给出错误的日期
我有以下资料:Xcode 将NSString转换为NSDate给出错误的日期,xcode,nsdate,nsdateformatter,Xcode,Nsdate,Nsdateformatter,我有以下资料: NSString *dtString = @"2017-05-18 13:05:45"; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; NSDate *converted = [formatter dateFromString: dtString]; 这将生成一个NSDate,其时间为:UTC 2017-
NSString *dtString = @"2017-05-18 13:05:45";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *converted = [formatter dateFromString: dtString];
这将生成一个NSDate,其时间为:UTC 2017-05-18 12:05:45,落后一小时。我怎样才能使它与字符串完全匹配
编辑:
我遇到的问题是,当我做一个简单的日期比较时,比如:
NSDate *inTenMinutes = [formatter dateFromString:@"2017-05-18 14:39:40"]; // NSlog will print this as 2017-05-18 13:39:40 UTC
NSDate *now = [NSDate date]; // Nslog prints this as 2017-05-18 14:30:35 UTC
BOOL isTenMinsDateEarlier = ([inTenMinutes compare:now] == NSOrderedAscending);
它的计算结果为是,没有任何意义。日期是正确的
NSLog
以UTC格式打印日期。但是在date math/NSCalendar/NSDateformatter中,您的时区+0100
被考虑在内。我如何才能正确地打印出来?使用(输出)日期格式化程序hmm,不像在调试器中那样确定它看起来也无效。调试器打印日期的描述,这与NSLog
所做的相同。NSDate
对象是一个时间点,从技术上讲是一个浮点数,它没有时区。如果考虑到本地时区,希望从日期中获取字符串,请使用日期格式化程序。