如果日期是今天的日期,我想显示Today, 25 Mar 2014 15:18
之类的日期。
还期待Tomorrow, 26 Mar 2014 15:18
,如果是明天的日期和Wednesday, 27 Mar 2014 15:18
,如果是明天的日期。
任何人都可以帮助我。
答案 0 :(得分:1)
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
NSLocale *frLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[dateFormatter setLocale:frLocale];
[dateFormatter setDoesRelativeDateFormatting:YES];
NSDate *date = [NSDate dateWithTimeIntervalSinceNow:60*60*24*1];
NSString *dateString = [dateFormatter stringFromDate:date];
NSLog(@"dateString: %@", dateString);
NSDateFormatter *detailFormatter = [[NSDateFormatter alloc] init];
[detailFormatter setLocale:frLocale];
[detailFormatter setDateFormat:@"dd MMM yyyy HH:mm"];
NSString *detailString = [detailFormatter stringFromDate:date];
NSLog(@"detailString: %@", detailString);
NSString *finalString = [NSString stringWithFormat:@"%@, %@",dateString, detailString];
NSLog(finalString);
答案 1 :(得分:0)
Apple不直接支持使用相对日期和绝对日期。您需要做的是创建两个格式化程序,一个是相对启用的,另一个是不启用。然后比较输出字符串(例如“今天”和“3月25日”),如果它们不相等,则将它们组合起来:“今天,3月25日”,但如果它们相等,只需使用一个。
另外,实际上在“après-après-demain”中,我认为您可能发现了一个错误(无论是在文档还是代码中)。你真的设置了“après-après-demain”吗?我尝试了Apple的示例代码:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
NSLocale *frLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"fr_FR"];
[dateFormatter setLocale:frLocale];
[dateFormatter setDoesRelativeDateFormatting:YES];
NSDate *date = [NSDate dateWithTimeIntervalSinceNow:60*60*24*3];
NSString *dateString = [dateFormatter stringFromDate:date];
NSLog(@"dateString: %@", dateString);
无论您的语言设置为何种,Apple都说会产生dateString: après-après-demain
的输出(因为它会将日期格式化程序切换为法语)。
但是当我在iOS和OS X上运行代码时,我得到了实际日期:Mar 28
(如果我更改为*2
,我会得到après-demain
。
所以,如果你看到同样的情况,我建议你向Apple提交一份错误报告。