尝试在iOS中的NSDateFormatter对象中大写缩写的星期几
我正在iOS中开发一个应用程序,其中有一个NSDateFormatter对象,如下所示:尝试在iOS中的NSDateFormatter对象中大写缩写的星期几,ios,nsdate,nsdateformatter,Ios,Nsdate,Nsdateformatter,我正在iOS中开发一个应用程序,其中有一个NSDateFormatter对象,如下所示: NSDate *today = [NSDate date]; NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat:@"EEE, MMM. dd"]; NSString *dateString = [dateFormat stringFromDate:today]; NSLog(
NSDate *today = [NSDate date];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"EEE, MMM. dd"];
NSString *dateString = [dateFormat stringFromDate:today];
NSLog(@"%@", dateString);
我的输出是:星期二,12月10日,我想显示:星期二,12月10日
但我的问题是,一周中的某一天只有第一个字母大写,而不是整个一天(即,我得到的是“Tue”,我想显示“Tue”)。这个月的格式很好(即“Dec”我很满意)
我已经检查了日期格式的规范,不幸的是,使用NSDateFormatter类没有常规的方法来执行此操作。有没有办法在不涉及月份的情况下,仍然将一周中的所有缩写字母大写?直接使用日期格式化程序无法做到这一点。最简单的方法是在格式化日期后处理字符串
NSString *dateString = [dateFormat stringFromDate:today];
dateString = [NSString stringWithFormat:@"%@%@", [[dateString substringToIndex:3] uppercaseString], [dateString substringFromIndex:3]];
更新:
以上假设EEE
总是给出3个字母的工作日缩写。可能有一些地区或语言的这种假设是无效的。一个更好的解决方案是:
NSString *dateString = [dateFormat stringFromDate:today];
NSRange commaRange = [dateString rangeOfString:@","];
dateString = [NSString stringWithFormat:@"%@%@", [[dateString substringToIndex:commaRange.location] uppercaseString], [dateString substringFromIndex:commaRange.location]];
只需单独获取日期,大写,然后获取剩余日期并附加它。像这样:
[dateFormat setFormat:@"EEE"];
NSString *day = [dateFormat stringFromDate:today];
[dateFormat setFormat:@"MMM. dd"];
NSString *restOfDate = [dateFormat:stringFromDate:today];
NSString *fullDate = [[day uppercaseString] stringByAppendingFormat:@", %@", restOfDate];
被接受的答案并不能真正解决问题。与注释一样,可以在DateFormatter实例上设置(标准/短/长/等)工作日/月符号:
dateFormatter.shortWeekdaySymbols = dateFormatter.shortWeekdaySymbols.map { $0.localizedUppercase }
dateFormatter.monthSymbols = dateFormatter.monthSymbols.map { $0.localizedCapitalized }
如果需要将格式化程序的区域设置设置为默认设置以外的其他设置,则应在设置之后进行这些调用。也许您应该在NSDateFormatter上执行SetShortweekDaySymarks<代码>[dateFormat setShortWeekdaySymbols:@[@“太阳”、“周一”、“周一”…]代码>@SamBudda不会的。格式为
EEE
,通常在工作日提供三个字母。因此,星期四
变成了星期四
@rmaddy,这与从苹果日期格式化程序文档链接到的本文档相反:-它给出了EEE的4个字母示例,例如:星期天:e-1..3-Tues@Jasarien我明白你在说什么,但在现实生活中,当我使用EEE
时,我总是得到一个三个字母的工作日缩写。我从未见过EEE
给出4个字母的结果。它是否返回本地化名称?一个本地化的名字有可能超过3个吗?@Jasarien这是个好问题。我想有一个区域设置,EEE
给出的不是3个字母的工作日名称。我会更新我的答案来处理这个问题。