我的目标:如果当前日期为“今天”或“昨天”,请使用“今天”和“昨天”字样。如果当前日期在今天或昨天之前,则使用以下格式(星期四,8月15日)。当我将setDoesRelativeDateFormatting设置为NO时,我可以使用@"EEE, MMM d"
来实现此格式,但是当我尝试使用以下代码时,它会分解并显示2013年8月12日,这不是我想要的...
// Set up the date formatter
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
dateFormatter.dateFormat = @"EEE, MMM d";
[dateFormatter setDoesRelativeDateFormatting:YES];
[dateFormatter setLocale:[NSLocale currentLocale]];
答案 0 :(得分:0)
这是一个黑客,因为我无法找到执行此任务的内置方式,但它几乎完美无缺。唯一的问题是它输出月份的全名而不是短输出。当然,如果需要,这可以通过类似于我在下面的代码中对年份所做的方式来修复。
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateStyle:NSDateFormatterFullStyle];
NSDateComponents *comps = [[NSCalendar currentCalendar] components:NSYearCalendarUnit fromDate:[NSDate date]];
NSString *theYear = [NSString stringWithFormat:@", %ld", comps.year];
[dateFormatter setDoesRelativeDateFormatting:YES];
[dateFormatter setLocale:[NSLocale currentLocale]];
NSString *dateString = [dateFormatter stringFromDate:[NSDate date]];
if ([dateString isEqualToString:@"Today"] || [dateString isEqualToString:@"Yesterday"]) {
NSLog(@"%@", dateString);
} else {
dateString = [dateString stringByReplacingOccurrencesOfString:theYear withString:@""];
NSLog(@"%@", dateString);
}
当打开相对格式时,它会打印Today
,当它关闭时会打印Friday, August 16