如何从date获得小时,分钟和上午/下午?

我试图从date提取小时,分钟和上午/下午,但我得到NULL输出。 我已经在下面显示了我的代码,请查看它。

NSString *dateStr=@"29/07/2013 02:00am"; NSDateFormatter * formatter=[[NSDateFormatter alloc] init]; [formatter setDateFormat:@"hh:mmaa"]; NSDate *date=[formatter dateFromString:dateStr]; NSString *finalDate=[formatter stringFromDate:date]; NSLog(@"%@",finalDate); 

提前谢谢了

你非常接近,但是在parsing它之前,你需要指定你的原始string是什么date格式,然后在创build之前设置你希望输出的date格式:

 NSString *dateStr=@"29/07/2013 02:00am"; // Create a date formatter NSDateFormatter * formatter=[[NSDateFormatter alloc] init]; // As rmaddy pointed out, you should set the locale: [formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]]; // Set the date format for the input string [formatter setDateFormat:@"dd/MM/yyyy hh:mma"]; // Create the NSDate from the string NSDate *date=[formatter dateFromString:dateStr]; // Set the date format for the output string [formatter setDateFormat:@"hh:mma"]; // Create the output string NSString *finalDate=[formatter stringFromDate:date]; NSLog(@"%@",finalDate); // Output is: 02:00AM 
 - (void) dateformat{ NSDate *today = [[NSDate alloc] init]; NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *components = [gregorian components:NSHourCalendarUnit|NSMinuteCalendarUnit fromDate:today]; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setLocale:[NSLocale currentLocale]]; [formatter setDateStyle:NSDateFormatterNoStyle]; [formatter setTimeStyle:NSDateFormatterShortStyle]; NSString *dateString = [formatter stringFromDate:today]; NSRange amRange = [dateString rangeOfString:[formatter AMSymbol]]; NSRange pmRange = [dateString rangeOfString:[formatter PMSymbol]]; BOOL is24hTime = (amRange.location == NSNotFound && pmRange.location == NSNotFound); if (is24hTime == NO ) { NSString *meridiem = (amRange.location == NSNotFound)?@"PM":@"AM"; NSLog(@"%d:%d %@",components.hour,components.minute,meridiem); } }