在Objective-C中将时间从军事格式化为常规时间



我正在尝试以10:00, 23:00, 1:00, 9:00等形式转换来自该数据库的时间。

我有两个字符串:

   NSString *timeFrom = @"10:00";
   NSString *timeTo = @"18:00";

我希望在应用程序中以以下格式显示它们: 10:00AM - 6:00PM .我为此使用 NSDateFormatter,但没有得到正确的结果。

   NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
   [dateFormatter setDateFormat:@"hh:mm"];
   NSDate *timeFromDateWithFormatter = [dateFormatter dateFromString:timeFrom];
   NSDate *timeToDateWithFormatter = [dateFormatter dateFromString:timeTo];

我正在寻找NSDateFormatter中的一个功能,该功能将转换为"标准"时间并相应地添加AM/PM。 但是,此代码会导致timeFromDateWithFormatter具有值 2000-01-01 15:00:00 +0000 并且timeToDateWithFormatter在此代码运行后为 nil。

您想从H:mm转换为h:mma。为此,您需要两种日期格式。

NSDateFormat *oldFormatter = [[NSDateFormatter alloc] init];
oldFormatter.dateFormat = @"H:mm"; // The old format
NSDateFormat *newFormatter = [[NSDateFormatter alloc] init];
newFormatter.dateFormat = @"h:mma"; // The new format
NSString *timeFrom = @"10:00";
NSString *timeTo = @"18:00";
NSDate *dateFrom = [oldFormatter dateFromString:timeFrom];
NSString *newTimeFrom = [newFormatter stringFromDate:dateFrom];
NSDate *dateTo = [oldFormatter dateFromString:timeTo];
NSString *newTimeTo = [newFormatter stringFromDate:dateTo];
NSLog(@"old times: %@ - %@", timeFrom, timeTo):
NSLog(@"new times: %@ - %@", newTimeFrom, newTimeTo):

这将给出输出:

旧时光: 10:00

- 18:00
新时间:上午10:00 - 下午6:00

最新更新