【问题标题】:How to use NSTimeInterval properly? [closed]如何正确使用 NSTimeInterval? [关闭]
【发布时间】:2012-10-29 20:23:45
【问题描述】:

我是 Xcode 新手,遇到以下问题:

我想要一种方法,它可以为我提供从给定日期到现在所经过的时间。 如果是 2 年前,我想返回一个字符串“2 年前”,但如果是 5 分钟前,我希望它返回一个带有“5 分钟前”的字符串。

我已经检查了 NSTimeInterval 和 NSDateFormatter 但我找不到让它工作的方法。

【问题讨论】:

  • 这个问题可能已经回答了一百次了。谷歌搜索有什么难的?
  • 您可能需要自己编写。我知道,这令人震惊。

标签: objective-c ios cocoa-touch nsdate nstimeinterval


【解决方案1】:

只是为了让你开始......

您可以像这样创建一个参考日期:

NSCalendar *gregorian = [[NSCalendar alloc]
                             initWithCalendarIdentifier:NSGregorianCalendar];

NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
dateComponents.year = 2012;
dateComponents.month = 1;
dateComponents.day = 1;
dateComponents.hour = 0;
dateComponents.minute = 0;
dateComponents.second = 0;

NSDate *referenceDate = [gregorian dateFromComponents: dateComponents];

当前日期可以这样获取:

NSDate *now = [NSDate date];

时间间隔以秒为单位,所以...

NSTimeInterval interval = [now timeIntervalSinceDate:referenceDate];
NSLog (@"reference date was %.0f seconds ago", interval);

我相信你从这里开始就可以自己弄清楚...

This answer 可能会帮助你。

【讨论】:

    【解决方案2】:

    谢谢,我想知道是否有更简单的方法 没有那么多代码行。

    您可以这样创建参考日期:

    NSDate *referenceDate = [NSDate date];
    [[NSCalendar currentCalendar] rangeOfUnit:NSYearCalendarUnit 
                                    startDate:&referenceDate 
                                     interval:NULL
                                      forDate:referenceDate];
    

    或者你试试这个:https://github.com/billgarrison/SORelativeDateTransformer

    【讨论】:

      猜你喜欢
      • 2021-02-15
      • 1970-01-01
      • 2021-04-22
      • 1970-01-01
      • 1970-01-01
      • 2013-10-09
      • 2022-01-22
      • 2023-04-08
      • 1970-01-01
      相关资源
      最近更新 更多