Iphone NSDateFormatter格式化问题

Iphone NSDateFormatter格式化问题,iphone,ios,objective-c,ios6,Iphone,Ios,Objective C,Ios6,我正在尝试以12小时格式将NSString转换为NSDate。(在iOS 6中) 代码: NSString *Bdt = @"05/23/2012 08:00 AM" NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease]; [df setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; [df setDateFormat:@"MM/dd/yyyy hh:mm a"

我正在尝试以12小时格式将
NSString
转换为
NSDate
。(在iOS 6中)

代码:

NSString *Bdt = @"05/23/2012 08:00 AM"
NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease];
[df setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
[df setDateFormat:@"MM/dd/yyyy hh:mm a"];
NSDate *bd = [df dateFromString:Bdt];
NSLog(@"%@",bd);
输出:

2012-05-23 08:00:00+0000应该是2012-05-23 08:00 AM

代码中有什么错误


如果您希望日期采用
2012-05-23 08:00 AM
样式,请多谢

创建dateformatter并将DateFormat设置为
yyyy-MM-dd hh:MM a

NSString *Bdt = @"05/23/2012 08:00 AM";
NSDateFormatter *df = [[NSDateFormatter alloc] init] ;
[df setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
[df setDateFormat:@"MM/dd/yyyy hh:mm a"];
NSDate *bd = [df dateFromString:Bdt];

NSDateFormatter *dateFormatter=[NSDateFormatter new];
[dateFormatter  setDateFormat:@"yyyy-MM-dd hh:mm a" ];
NSString *datestr=[dateFormatter stringFromDate:bd];
NSLog(@"%@",datestr);
*注意:我使用的是ARC,因此对象不会被释放/自动释放

编辑:

NSDate
将仅采用此格式:
2012-05-23 08:00:00+0000


对于任何其他格式,您需要使用
NSString

它没有任何问题。您正在NSLog中打印NSDate,这与创建具有特定格式的NSString非常不同


似乎您将内部NSDate表示与字符串格式混淆了。NSDate以不同于人类表示日期的方式在内部存储日期。就像NSString以一种可能不是您最终想要的格式存储字符串一样,例如ASCII或UTF-8。调用NSLog时,您会收到一条诊断消息,根据
-(NSString*)description
-(NSString*)debugDescription

返回的字符串显示日期。此处没有任何错误。如果您记录NSDate(即在其上调用
description
),您将获得
2012-05-23 08:00:00+0000
。您将获得08:00AM@MatthiasBauch:是的,但应该是
2012-05-23 08:00 AM
@AnoopVaidya:不,我得到
2012-05-23 08:00:00+0000
@user1859900:chck myanswr@AnoopVaidya当前位置我不是要NSString!我只想从字符串中确定一个日期!!!执行NSLog(@“%@”,bd)@user1859900:无法获取自定义的NSDate输出。NSDate包含gmt的时区。因此,只有一种方法可以通过NSString执行。