NSDateFormatter没有正确转换NSString

时间:2012-06-12 12:56:35

标签: ios ios5 nsdate nsdateformatter

尝试证明我可以将NSString转换为NSDate的简单案例。创建NSDate,将其转换为NSString,然后再转换为NSDate。日期看起来很正常,但是当我将其转换回来时,我总会得到一些像12/25/2011的日期....有人可以发现我的错误吗?

 NSDateFormatter *df = [[NSDateFormatter alloc] init];
 [df setDateFormat:@"dd/MM/YY hh:mm a"];
 NSDate* b = [[NSDate alloc] init];
 NSString* f = [df stringFromDate:b]; // has the current date and time
 NSDate* dt =[df dateFromString:f];  // 12/25/2011 - where does it get this?

2 个答案:

答案 0 :(得分:0)

尝试使用以下内容:

[df setDateFormat:@"dd/MM/yyyy hh:mma"]; // or @"dd/MM/yy hh:mma"

结果如下:

Printing description of b:
2012-06-12 13:06:16 +0000
Printing description of dt:
2012-06-12 13:06:00 +0000

如果您需要更多信息,建议您阅读date-formatter-examples

如果不使用ARC,请注意内存泄漏。例如,使用[NSDate date]代替[[NSDate alloc] init]

希望有所帮助。

答案 1 :(得分:0)

对我而言,您的系统似乎正在使用Datestyle。

您可以将格式化程序设置为不使用样式:

[df setDateStyle:NSDateFormatterNoStyle];

为什么你一般不使用这种风格?似乎NSDateFormatterShortStyle就是你想要的。您只需设置时间样式,并使用setLocal:按日期顺序显示日期。