AM / PM在NSDateFormatter问题

我写下面的代码将一个date格式转换成另一个dateformat。 但是AMstring工作和PM没有工作。 请帮忙-

dateTime=@"2013-01-24 18:30 PM"; //dateTime=@"2013-01-24 06:30 AM"; NSDateFormatter *dtFormatter=[[NSDateFormatter alloc]init]; [dtFormatter setDateFormat:@"yyyy-MM-dd hh:mm a"]; NSDate *AptDate=[dtFormatter dateFromString:dateTime]; [dtFormatter setDateFormat:@"MMM dd,yyyy hh:mm a"]; NSString *strDate=[dtFormatter stringFromDate:AptDate]; 

这里我得到AptDatevariables为空,如果我使用PM格式

你需要用HH代替HH ,因为你的时间是24小时制:

 [dtFormatter setDateFormat:@"yyyy-MM-dd HH:mm a"]; 

您的完整代码将如下所示:

 *dateTime=@"2013-01-24 18:30 PM"; //dateTime=@"2013-01-24 06:30 AM"; NSDateFormatter *dtFormatter=[[NSDateFormatter alloc]init]; [dtFormatter setDateFormat:@"yyyy-MM-dd HH:mm a"]; NSDate *AptDate=[dtFormatter dateFromString:dateTime]; [dtFormatter setDateFormat:@"MMM dd,yyyy hh:mm a"]; NSString *strDate=[dtFormatter stringFromDate:AptDate]; NSLog(@"===> %@",AptDate); NSLog(@"===> %@",strDate); 

输出:

 ===> 2013-01-24 07:00:00 +0000 ===> Jan 24,2013 12:30 PM 
 UILabel *dateLabel = (UILabel *)[cell viewWithTag:400]; NSString *oldDate = [exercise objectForKey:@"date"]; //make formatter NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; //24 hour format NSDate *tempDate=[formatter dateFromString:oldDate]; NSLog(@"temp date %@", tempDate); [formatter setDateFormat:@"hh:mm a"]; NSString *newDate=[formatter stringFromDate:tempDate]; NSLog(@"new date %@", newDate); //make label text [dateLabel setText:newDate]; 

对于任何从mySQL看DATETIME邮票到正常hh:mm格式显示AM / PM正确的这个工作对我来说。

对于那些正在寻找Swift 3版本的接受答案。

 let date1 = Date() let formatter = DateFormatter() formatter.dateFormat = "yyyy-MM-dd hh:mm:ss a" print(formatter.string(from: date1)) let dateTime = "2013-01-24 18:30 PM" let dateFormater = DateFormatter() dateFormater.dateFormat = "yyyy-MM-dd HH:mm a" let AptDate = dateFormater.date(from: dateTime) dateFormater.dateFormat = "MMM dd,yyyy hh:mm a" let strDate = dateFormater.string(from: AptDate!) print("===> \(AptDate!)") print("===> \(strDate)")