【问题标题】:calculating duration between NSDate swift 2计算 NSDate swift 2 之间的持续时间
【发布时间】:2015-10-26 15:26:20
【问题描述】:

在通知中,您会看到显示“5 分钟前发布”的活动, 这就是我要在这里实现的目标。以下功能正常运行。

func daysBetweenDate(startDate: NSDate, endDate: NSDate) -> Int
{
    let calendar = NSCalendar.currentCalendar()

    let components = calendar.components([.Day], fromDate: startDate, toDate: endDate, options: [])
//    print(components.second)
    return components.day
}

daysBetweenDate(postedDate, endDate: NSDate())

func hoursBetweenDate(startDate: NSDate, endDate: NSDate) -> Int
{
    let calendar = NSCalendar.currentCalendar()

    let components = calendar.components([.Hour], fromDate: startDate, toDate: endDate, options: [])
    //    print(components.second)
    return components.hour
}

hoursBetweenDate(postedDate, endDate: NSDate())

我如何识别postedDate 是否已经是秒、分钟、小时或天。并返回任何必要的?

如果两个 NSDate 之间的持续时间超过一分钟,我想输出“34 分钟前”,当它超过一个小时时,“2 小时前”等等。我怎么能有条件地做到这一点。

【问题讨论】:

  • 发帖前有没有试过搜索?您可能找不到swift 的答案,但您一定会找到objective-c 的答案。
  • 您似乎已经解决了问题。我现在不明白问题是什么。
  • @matt 如果两个 NSDate 之间的持续时间超过一分钟,我想输出“34 分钟前”,当它超过一个小时时,“2 小时前”等等。我怎样才能有条件地做到这一点。
  • 好吧,考虑一下。如果有天数,则只打印天数。如果没有,那么如果有小时,只打印小时。如果没有,那么如果有分钟,只打印分钟。否则只打印秒数。
  • 顺便说一句,您可以从 NSDateComponentsFormatter.h 获得很大的帮助。

标签: ios nsdate swift2.1


【解决方案1】:

给出两个日期,你可以用 NSDateComponentsFormatter 很好地做到这一点:

let form = NSDateComponentsFormatter()
form.maximumUnitCount = 1
form.unitsStyle = .SpellOut // or .Full, whatever you prefer
let s = form.stringFromTimeInterval(
    d1.timeIntervalSinceReferenceDate - d2.timeIntervalSinceReferenceDate)

【讨论】:

  • 您确实意识到您需要从较晚的日期中减去较早的日期,不是吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-10
  • 2019-02-17
  • 1970-01-01
  • 1970-01-01
  • 2011-07-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多