如何根据时差在NSDate中格式化?

时间:2013-07-16 09:07:56

标签: ios objective-c nsdate nsdateformatter nsdatecomponents

我想以下列方式显示日期:

  • 如果是今天,则只显示时间。
  • 如果是过去一周,则显示“昨天”,“星期日”,“星期一”等。
  • 如果超过一周,则显示实际日期。

我正在尝试获取与iPhone短信应用程序中日期显示类似的内容。

3 个答案:

答案 0 :(得分:1)

有关以下格式的更多格式:

  • OS X v10.8和iOS 6.0中的格式化程序使用版本tr35-25
  • iOS 5.0-5.1中的格式化程序使用版本tr35-19
  • OS X v10.7和iOS 4.3中的格式化程序使用版本tr35-17
  • iOS 4.0-4.2中的格式化程序使用版本tr35-15
  • iOS 3.2中的格式化程序使用版本tr35-12
  • OS X v10.6和iOS 3.0-3.1中的格式化程序使用版本tr35-10

答案 1 :(得分:1)

为什么不使用

的方法
setDoesRelativeDateFormatting:

将其设置为YES。现在,格式化程序现在将返回“今天”或“昨天”或“明天”,具体取决于应格式化的日期。如果找不到相对格式,则使用格式化程序将用于格式。

答案 2 :(得分:0)

在询问您尚未尝试过的事情之前,请先阅读NSDateFormatterlink here)和NSDatelink here)课程文档。

NSDateFormatter类可用于根据日期的不同组件使用固定参数将日期正确格式化为您选择的日期。要显示当天的全名,请使用格式中的“cccc”。例如

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setFormat:@"cccc dd-MM, HH:mm:ss"];

为了比较日期,我们提供了比较NSDate对象的内置方法,例如isEqualToDatelaterDate:timeIntervalSinceNow等。浏览Apple文档{{3} }