未来相对日期是人类可读形式

时间:2013-01-19 00:35:10

标签: ios objective-c cocoa-touch

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

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

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

然后该功能将于明天上午9点结束。

我发现如何使用过去的在线日期,而不是将来的日期。

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

1 个答案:

答案 0 :(得分:2)

您需要使用NSDateFormatter。来自docs

  

setDoesRelativeDateFormatting:指定接收方是否使用   日期组件的“今天”和“明天”等短语。

- (void)setDoesRelativeDateFormatting:(BOOL)b
  

参数b YES指定接收方应使用相对日期   格式化,否则为NO。讨论如果日期格式化程序使用相对   日期格式,尽可能替换其日期组件   用短语输出 - 例如“今天”或“明天” - 表示a   相对日期。可用的短语取决于日期的区域设置   格式;而对于将来的日期,英语可能只允许   “明天,”法国人可能允许“后天后天”   如以下示例所示。

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