sye*_*dfa 3 nsdate nsdateformatter ios
我正在iOS中的应用程序上工作,我有一个NSDateFormatter对象,如下所示:
NSDate *today = [NSDate date];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"EEE, MMM. dd"];
NSString *dateString = [dateFormat stringFromDate:today];
NSLog(@"%@", dateString);
Run Code Online (Sandbox Code Playgroud)
我的输出是:12月10日星期二,我想显示:TUE,12月10日.
我的问题是,星期几只有首字母大写,而不是整天(即我得到"星期二",我想显示"TUE").月份的格式很好(即"Dec"我很满意).我已经检查了日期格式的规格,遗憾的是,使用NSDateFormatter类没有传统方法.有没有办法解决这个问题,仍然可以在一周中将所有缩写字母大写,而不会触及月份?
在此先感谢所有回复的人.
rma*_*ddy 10
没有办法直接使用日期格式化程序.最简单的方法是在格式化日期后处理字符串.
NSString *dateString = [dateFormat stringFromDate:today];
dateString = [NSString stringWithFormat:@"%@%@", [[dateString substringToIndex:3] uppercaseString], [dateString substringFromIndex:3]];
Run Code Online (Sandbox Code Playgroud)
更新:
以上假设EEE总是给出3个字母的工作日缩写.有可能存在某些区域设置或语言,此假设无效.那么更好的解决方案如下:
NSString *dateString = [dateFormat stringFromDate:today];
NSRange commaRange = [dateString rangeOfString:@","];
dateString = [NSString stringWithFormat:@"%@%@", [[dateString substringToIndex:commaRange.location] uppercaseString], [dateString substringFromIndex:commaRange.location]];
Run Code Online (Sandbox Code Playgroud)
接受的答案并没有真正解决提出的问题。就像Hot Licks评论的那样,可以在 DateFormatter 实例上设置(标准/短/长/等)工作日/月份符号:
dateFormatter.shortWeekdaySymbols = dateFormatter.shortWeekdaySymbols.map { $0.localizedUppercase }
dateFormatter.monthSymbols = dateFormatter.monthSymbols.map { $0.localizedCapitalized }
Run Code Online (Sandbox Code Playgroud)
如果您需要将格式化程序的语言环境设置为默认值以外的语言环境,则应在执行此操作后进行这些调用。
| 归档时间: |
|
| 查看次数: |
7417 次 |
| 最近记录: |