0

如何输出人类可读的日期,如将 NSDATE 转换为人类可读的形式,如明天、一周后、1 个月后等?

例如,如果当前时间是 2012 年 1 月 19 日上午 7 点

输入日期为 2012 年 1 月 20 日上午 9 点

那么函数应该在明天上午 9 点结束。

我发现如何在网上使用过去的日期而不是未来的日期来做到这一点。

我在网上找到的功能也不具体。任何帮助,将不胜感激!谢谢

4

1 回答 1

2

您需要使用 NSDateFormatter。从文档

setDoesRelativeDateFormatting:指定接收者是否对日期组件使用诸如“今天”和“明天”之类的短语。

- (void)setDoesRelativeDateFormatting:(BOOL)b

参数 b YES 指定接收方应使用相对日期格式,否则为 NO。讨论 如果日期格式化程序使用相对日期格式化,它会在可能的情况下用表示相对日期的短语(例如“今天”或“明天”)替换其输出的日期部分。可用的短语取决于日期格式化程序的语言环境;而对于未来的日期,英语可能只允许“明天”,法语可能允许“后天后天”,如下例所示。

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);
// Output
// dateString: après-après-demain
于 2013-01-19T00:39:21.863 回答