Swift 如何计算从某个时间点到现在已经过去了多少分钟

Swift 如何计算从某个时间点到现在已经过去了多少分钟,swift,time,nsdate,Swift,Time,Nsdate,我希望我的应用程序能显示从某个时间点起经过了多少时间,比如秒表。我应该使用NSdate吗 我尝试过使用NSDate(timeIntervalSinceReferenceDate:))作为参数,我想选择NSDate(timeIntervalSince1970:someTimeStamp),这是不允许的 我还尝试手动执行,将当前时间的NSTimeInterval转换为Int,如下所示: var date = NSDate().timeIntervalSince1970 let time3 = Int

我希望我的应用程序能显示从某个时间点起经过了多少时间,比如秒表。我应该使用NSdate吗

我尝试过使用
NSDate(timeIntervalSinceReferenceDate:))
作为参数,我想选择
NSDate(timeIntervalSince1970:someTimeStamp)
,这是不允许的

我还尝试手动执行,将当前时间的
NSTimeInterval
转换为
Int
,如下所示:

var date = NSDate().timeIntervalSince1970
let time3 = Int(date)
let time4 = Int(someTimeStamp) //NSTimeInterval in Epoch time
let time5 = Double(time3 - time4)
let time6 = NSDate(timeIntervalSinceReferenceDate: time5) //This is what I need
虽然现在我不确定如何正确显示
time6
,但我可以手动除以60得到分钟,除以60得到小时,但我非常确定必须有更简单的方法来显示自
NSTimeInterval
(如果低于60分钟,最好使用
mm
格式;如果高于60分钟,最好使用
hh:mm
格式)

您可以使用以下内容:(目标C)

斯威夫特:

    let gregorian = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)

    let unitFlags:NSCalendarUnit = NSCalendarUnit.Hour.union(NSCalendarUnit.Minute).union(NSCalendarUnit.Second)

    let components = gregorian?.components(unitFlags, fromDate: apptDt, toDate:deliveredDt, options: .MatchFirst)

    let seconds = components?.second
    let minute = components?.minute
    let hour = components?.hour

    print("Second: \(seconds), Minutes:\(minute), Hour:\(hour)")
只需在“fromDate”和“toDate”当前日期中输入开始日期。


设elapsedTime=NSDate().timeIntervalSinceDate(DateYouWantToPassToGetInterval)

请注意NSDate后面的()。NSDate()实例化一个新的NSDate对象,然后timeIntervalSinceDate返回该对象与timeAtPress之间的时间差。这将返回一个浮点值(技术上称为NSTimeInterval)

如果希望将其截断为Int值,可以使用:


让duration=Int(elapsedTime)
谢谢@Bhavuk,下面是我为Swift 4准备的内容

let now = Date()
let yesterday = Date.init(timeIntervalSinceNow: -86400)
let calendar = Calendar.current
let componentSet: Set = [Calendar.Component.hour, .minute, .second]
let components = calendar.dateComponents(componentSet, from: now, to: yesterday)

let seconds = components.second!
let minutes = components.minute!
let hours = components.hour!

print("Seconds: \(seconds), Minutes:\(minutes), Hours:\(hours)")

您可能也希望使用swift/来提供代码。谢谢,尽管swift示例会更好,因为我的代码使用swift,我不知道目标C
let now = Date()
let yesterday = Date.init(timeIntervalSinceNow: -86400)
let calendar = Calendar.current
let componentSet: Set = [Calendar.Component.hour, .minute, .second]
let components = calendar.dateComponents(componentSet, from: now, to: yesterday)

let seconds = components.second!
let minutes = components.minute!
let hours = components.hour!

print("Seconds: \(seconds), Minutes:\(minutes), Hours:\(hours)")