4

尝试在 iOS 7 中格式化日期并在星期几中得到一些意想不到的结果。Apple 的文档没有列出适用于 iOS 7 的模式,但为 iOS 6 提供的模式在此处。查看星期部分

星期几 - 使用 1 到 3 个字母表示短日,或 4 个字母表示全名,或 5 个字母表示窄名。

但是我无法让 4 个字母的全名格式化程序字符串工作。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"EEE"];
NSLog(@"%@", [formatter stringFromDate:date]);

打印“星期三”

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"EEEE"];
NSLog(@"%@", [formatter stringFromDate:date]);

还打印“Wed”,应该打印“Wednesday”

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"EEEEE"];
NSLog(@"%@", [formatter stringFromDate:date]);

打印“W”

是否有一组新的格式字符串应该用于 iOS 7,或者我做错了什么?

4

2 回答 2

5

正如其他人所注意到的,这看起来像是一个语言环境问题。

尝试强制使用已知的语言环境,如下所示

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
// or
NSLocale *locale = [NSLocale currentLocale];
[formatter setLocale:locale];
[formatter setDateFormat:@"EEEE"];
NSLog(@"%@", [formatter stringFromDate:date]);
于 2013-10-18T15:47:22.883 回答
0

有一个新的Unicode 标准(20139 月 18 日发布),但这不会改变 EEEE 格式。

我猜这取决于语言环境。iOS 可能会尝试变得聪明,缩短名称,因为它更好地匹配默认语言环境。NSLocale尝试向格式化程序添加几个不同的 s 并描述您的结果。

于 2013-10-18T15:36:56.600 回答