我正在使用以下代码。
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中显示出预期效果。
答案 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
无声地在内部调整日期格式化程序的问题。