2

一个奇怪的问题:

我通过以下代码将字符串转换为日期:

NSString *dateStr = @"02/10/2012 12:00:13 PM";

NSDateFormatter *dtF = [[NSDateFormatter alloc] init];
[dtF setDateFormat:@"MM/dd/yyyy HH:mm:ss a"];

NSDate *d = [dtF dateFromString:dateStr];
NSDateFormatter *dateFormatStr = [[NSDateFormatter alloc] init];

[dateFormatStr setDateFormat:@"MMMM dd, yyyy HH:mm a"];
NSString *strDate = [dateFormatStr stringFromDate:d];   
NSLog(@"Output:::-->%@",strDate);

我正在使用Xcode 4.2

它在模拟器和带有 iOS 5.0 和 iPhone 4 的设备 iPhone 3Gs 和 iPad 中运行良好

但问题出在装有 iOS 5.0.1 的 iPod 中。在 iPod 中它显示(null)值。

代码有什么问题?或者还有其他问题吗?

4

3 回答 3

3

我发现由于用户在 iPhone 上的设置,NSDateFormatter 输出可能不稳定。您可以通过使用它来强制它标准化(我不记得细节) -

[dtF setLocale:enUSPOSIXLocale];

...使整个输出更可预测。

于 2012-04-18T10:37:51.007 回答
2

不如a试试aaa

用以下代码替换您的代码:

NSString *dateStr = @"02/10/2012 12:00:13 PM";

NSDateFormatter *dtF = [[NSDateFormatter alloc] init];
[dtF setDateFormat:@"MM/dd/yyyy HH:mm:ss a"];

NSDate *d = [dtF dateFromString:dateStr];
NSDateFormatter *dateFormatStr = [[NSDateFormatter alloc] init];

[dateFormatStr setDateFormat:@"MMMM dd, yyyy hh:mm aaa"];
NSString *strDate = [dateFormatStr stringFromDate:d];   
NSLog(@"Output:::-->%@",strDate);

输出:::-->February 10, 2012 12:00 PM

于 2012-04-18T09:24:06.960 回答
1

解决了 !!!

问题出在日期字符串中NSString *dateStr = @"02/10/2012 12:00:13 PM";

时间是 24 小时制的,我认为这是错误的“AM/PM” 。AM/PM应采用 12 小时格式。

所以,我刚刚从字符串中删除了AM/PM并且它起作用了!!!

也来自代码:

[dtF setDateFormat:@"MM/dd/yyyy HH:mm:ss"];
于 2012-04-24T06:34:20.593 回答