Iphone NSDateFormatter格式化问题
我正在尝试以12小时格式将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"
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执行。