日期格式与ios 5.1中的“12月10日星期一”错误显示相同

时间:2013-02-05 07:26:33

标签: ios ipad ios5

我正在使用以下代码。

NSString * weekdayString = [[self date] descriptionWithLocale:@"%A"];
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:usLocale];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
dateString = [NSString stringWithFormat:@"%@,%@",weekdayString,[dateFormatter stringFromDate:[self date]]];
NSArray * components = [dateString componentsSeparatedByString:@","];
dateString = [NSString stringWithFormat:@"%@,%@",[components objectAtIndex:0],[components objectAtIndex:1]];

它在模拟器和ios 6.0中运行良好,但它没有在设备(iPad)中的ios 5.1中显示出预期效果。

1 个答案:

答案 0 :(得分:2)

NSDate -descriptionWithLocale记录为NSLocale;你传递的是NSString,因此依赖于无证件的行为。

还不清楚你想要通过拆分组件来实现什么 - 大概是你假设NSDateFormatterShortStyle总是有一个逗号?文档也不保证这一点。

您可能想要做的只是设置自定义日期格式字符串。从您帖子的标题看起来您可能想要EEEE, MMMM dd。例如,

// see QA1480 re: en_US_POSIX
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:usLocale];
[dateFormatter setDateFormat:@"EEEE, MMMM dd"];
dateString = [dateFormatter stringFromDate:[self date]];

QA1480解决了导致NSDateFormatter无声地在内部调整日期格式化程序的问题。