如何将小时字符串格式化为 objective c 中的当地时间
How do I format an hour string to local time in objective c
这可能是重复的,但我卡住了,找不到这样具体的参考...
我可以用这个方法获取当地时间:
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
请注意前两行的时间。
再次使用日期格式化程序:
[incomingFormat setDateFormat:@"hh:mm"];
NSString * timeString = [incomingFormat stringFromDate:incomingDate];
NSDateFormatter
使用当前语言环境,其中包括当前时区,by default。
或者,也许更简单,使用 class 方法 +localizedStringFromDate:dateStyle:timeStyle:
:
NSString * timeString = [NSDateFormatter localizedStringFromDate:incomingDate
dateStyle:NSDateFormatterNoStyle
timeStyle:NSDateFormatterShortStyle];
这可能是重复的,但我卡住了,找不到这样具体的参考...
我可以用这个方法获取当地时间:
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
请注意前两行的时间。
再次使用日期格式化程序:
[incomingFormat setDateFormat:@"hh:mm"];
NSString * timeString = [incomingFormat stringFromDate:incomingDate];
NSDateFormatter
使用当前语言环境,其中包括当前时区,by default。
或者,也许更简单,使用 class 方法 +localizedStringFromDate:dateStyle:timeStyle:
:
NSString * timeString = [NSDateFormatter localizedStringFromDate:incomingDate
dateStyle:NSDateFormatterNoStyle
timeStyle:NSDateFormatterShortStyle];