这可能是重复的但是我被卡住了,找不到这样一个具体的参考...
我可以通过这种方法获得当地时间:
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:cellForRowAtIndexPath:] incoming date : 2015-05-21T05:50:00
incoming formatted date : 2015-05-21 09:50:00 +0000
incoming formatted hourString : 5
请注意前两行的小时数。
答案 0 :(得分:0)
再次使用日期格式化程序:
[incomingFormat setDateFormat:@"hh:mm"];
NSString * timeString = [incomingFormat stringFromDate:incomingDate];
NSDateFormatter
使用当前的区域设置,其中包含当前时区by default。
或者,或许更简单地说,使用类方法+localizedStringFromDate:dateStyle:timeStyle:
:
NSString * timeString = [NSDateFormatter localizedStringFromDate:incomingDate
dateStyle:NSDateFormatterNoStyle
timeStyle:NSDateFormatterShortStyle];