如何获取上午/下午格式的时间iphone NSDateFormatter?

我正在使用NSDateFormatter在iPhone应用程序中工作。 从"00:00:00", "16:00:00","15:30:00" and so on 。 如果时间是"00:00:00" to "12 AM" ,如果时间是"16:00:00" to "4 PM" ,如果时间是“15:30: 00“到”3.30 PM“。 我已经使用下面的代码,但是当我通过"16:00:00" the date returns null

  NSString *dats1 = @"16:00:00"; NSDateFormatter *dateFormatter3 = [[[NSDateFormatter alloc] init] autorelease]; [dateFormatter3 setDateStyle:NSDateFormatterMediumStyle]; [dateFormatter3 setDateFormat:@"hh:mm:ss"]; NSDate *date1 = [dateFormatter3 dateFromString:dats1]; NSLog(@"date1 : %@", date1); **// Here returning (null)** NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"hh:mm a"]; NSLog(@"Current Date: %@", [formatter stringFromDate:date1]); **// Here also returning (null)** [formatter release]; 

当通过“00:00:00”时正确返回“12 AM”。 任何人都可以请帮我解决这个问题? 提前致谢。

如果您的时间格式在24hrs请使用"HH:mm:ss"格式。 请testing代码,让我知道它是否为你工作。 我已经testing,它正在返回"4 PM"

 NSString *dats1 = @"16:00:00"; NSDateFormatter *dateFormatter3 = [[[NSDateFormatter alloc] init] autorelease]; [dateFormatter3 setDateStyle:NSDateFormatterMediumStyle]; [dateFormatter3 setDateFormat:@"HH:mm:ss"]; NSDate *date1 = [dateFormatter3 dateFromString:dats1]; NSLog(@"date1 : %@", date1); **// Here returning (null)** NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"hh:mm a"]; NSLog(@"Current Date: %@", [formatter stringFromDate:date1]); **// Here also returning (null)** [formatter release]; 

谢谢。

为什么你再次分配NSDateFormatter

你只需要格式化到NSDate ,然后再次到NSString

  NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; [dateFormatter setDateFormat:@"HH:mm:ss"]; NSDate *date = [dateFormatter dateFromString:dats1]; [dateFormatter setDateFormat:@"hh:mm a"]; NSString *formattedDate = [dateFormatter stringFromDate:date]; NSLog(@"%@",formattedDate); 

试试HH:mm:ss (注意小时格式的大写)

您可以使用适应当前语言环境的.ShortStyle

 let timeFormatter = NSDateFormatter() timeFormatter.dateStyle = .NoStyle timeFormatter.timeStyle = .ShortStyle timeFormatter.stringFromDate(NSDate()) 

根据当前的设备区域设置, 17:12返回17:125:12 PM

以下代码始终保持12小时格式:

 NSLocale *12hourFomrat = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; df.locale = 12hourFomrat; 

这始终保持24小时制

 NSLocale *24hourFormat = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"]; df.locale = 24hourFormat 

希望有人能够帮助谁想要得到它在Swift中

对于Swift

 let dateFormatter = NSDateFormatter() //if some one want 12AM,5PM then use "hh mm a" //if some one want 00AM,17PM then use "HH mm a" dateFormatter.dateFormat = "hh mm a" let stringDate = dateFormatter.stringFromDate(NSDate()) println(stringDate) 

你的date格式应该是:

  [dateFormatter3 setDateFormat:@"HH:mm:ss"]; 

检查date格式模式Doku