-2

我正在尝试转换NSStringNSDate12 小时格式。(在 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

代码有什么问题?

谢谢

4

2 回答 2

3

如果你想要2012-05-23 08:00 AM时尚的约会

创建一个 dateformatter 和 setDateFormat asyyyy-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

于 2013-03-16T07:57:32.813 回答
3

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

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

于 2013-03-16T09:08:47.293 回答