Objective c 在目标c中,如何将小时字符串格式化为本地时间

Objective c 在目标c中,如何将小时字符串格式化为本地时间,objective-c,ios8,nsdate,nsdateformatter,Objective C,Ios8,Nsdate,Nsdateformatter,这可能是一个重复,但我卡住了,无法找到这样一个具体的参考 我可以用这种方法得到当地时间: NSLog(@"incoming date : %@", etdString); NSDateFormatter *incomingFormat = [[NSDateFormatter alloc] init]; [incomingFormat setDateFormat:@"yyyy-MM-dd'T'hh:mm:ss"]; NSDate *incomingDate = [incomingFormat d

这可能是一个重复,但我卡住了,无法找到这样一个具体的参考

我可以用这种方法得到当地时间:

NSLog(@"incoming date  : %@", etdString);
NSDateFormatter *incomingFormat = [[NSDateFormatter alloc] init];
[incomingFormat setDateFormat:@"yyyy-MM-dd'T'hh:mm:ss"];
NSDate *incomingDate = [incomingFormat dateFromString: etdString];
NSLog(@"incoming formatted date  : %@", incomingDate);
这将生成正确显示本地时间的日期字符串

现在,我需要小时部分

我用了这个剪辑:

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:NSCalendarUnitHour fromDate:incomingDate];
NSInteger hour = [components hour];
NSString *hourString = [NSString stringWithFormat:@"%ld", hour];
但我的问题是
hourString
显示UTC时间。我也需要当地时间

欢迎任何建议

更新:这是当前代码的日志输出:

[StopScheduleController tableView:CellForRowatineXpath:]传入日期:2015-05-21T05:50:00
传入格式化日期:2015-05-21 09:50:00+0000
传入格式化小时字符串:5


请注意前两行中的小时数。

再次使用日期格式化程序:

[incomingFormat setDateFormat:@"hh:mm"];
NSString * timeString = [incomingFormat stringFromDate:incomingDate];
NSDateFormatter
使用当前区域设置,其中包括当前时区

或者,更简单地说,使用class方法:


您声称上面的“本地时间”不应该是本地时间,而应该是UTC,因为您正在转储没有格式的NSDate对象。ok。我没有要求任何东西,也许我错了,但我已经在我的问题中添加了一些日志。您正在转储的内容与预期的一样。传入日期假定为本地时间,并转换为UTC。然后
hourString
显示本地时间的小时数。您有解决方案吗?您没有问题,我可以看到。如果传入的日期字符串是本地时间,那么上面的代码应该可以正常工作。如果不是本地时间(而是UTC),您需要至少通过将NSDateFormatter的时区设置为UTC来解决此问题。谢谢您,先生,我现在正在处理您的代码。我感谢你的帮助。
NSString * timeString = [NSDateFormatter localizedStringFromDate:incomingDate
                                                       dateStyle:NSDateFormatterNoStyle
                                                       timeStyle:NSDateFormatterShortStyle];