将24格式的时间转换为12格式

时间:2015-07-25 08:47:29

标签: ios objective-c xcode

我在字符串中有24格式的时间,例如@“22:00”我想将此时间转换为@“10:00 pm”所以我写下面的代码:

NSDateFormatter *df=[[NSDateFormatter alloc]init];
[df setDateFormat:@"HH:mm"];
NSDate *date= [df dateFromString:@"22:00"];
[df setDateFormat:@"hh:mm a"];
NSLog(@"%@",[df stringFromDate:date]);

不幸的是结果仍然是@“22:00”。

enter image description here

问题是如何将24格式的时间转换为12格式?

1 个答案:

答案 0 :(得分:1)

你真的不需要NSDateFormatter,因为这是一个简单的数学问题:

NSString *time24 = @"24:00";
NSArray *elements = [time24 componentsSeparatedByString:@":"];
NSAssert([elements count] == 2, @"Expected 2 time elements"];
NSInteger hour = [elements[0] intValue];
NSInteger minutes = [elements[1] intValue];
NSString *time12 = [NSString stringWithFormat:@"%02d:%02d %@",
    hour % 12, minutes, (hour >= 12 ? @"PM" : @"AM")];