在iOS中查找两个日期的差异
我不确定我做错了什么,我需要找出两个日期之间的差异并从中提取秒数,下面是我的代码。我没有得到正确的秒数。有秒之差在iOS中查找两个日期的差异,ios,swift,nsdateformatter,nsdatecomponents,nsdatecomponentsformatter,Ios,Swift,Nsdateformatter,Nsdatecomponents,Nsdatecomponentsformatter,我不确定我做错了什么,我需要找出两个日期之间的差异并从中提取秒数,下面是我的代码。我没有得到正确的秒数。有秒之差 public func captureStartTime() { captureStartDateTime = Date() } public func captureEndTime(eventType: String, eventElement: String) { let difference = Date().timeIntervalSince(c
public func captureStartTime() {
captureStartDateTime = Date()
}
public func captureEndTime(eventType: String, eventElement: String) {
let difference = Date().timeIntervalSince(captureStartDateTime)
let interval = Int(difference)
let seconds = interval % 60
let secondsDescrp = String(format: "%02d", seconds)
}
interval
是您想要的答案。这是两个日期之间的总秒数
您的
seconds
值只有在您想从总秒数中计算小时数、分钟数和秒数或分钟数和秒数时才有用。使用以下代码获取两个日期之间的差值,当按下按钮1时,将当前时间存储在startTime
中,当按下按钮2时,将当前日期时间存储在endTime
中,查看此代码,我希望这对您有所帮助
public func captureStartTime() {
captureStartDateTime = Date()
}
public func captureEndTime(eventType: String, eventElement: String) {
let difference = Date().timeIntervalSince(captureStartDateTime)
let interval = Int(difference)
let seconds = interval % 60
let secondsDescrp = String(format: "%02d", seconds)
}
var startTime:Date!
var endTime:Date!
@IBAction func buttonStartTime(_ sender: UIButton) {
startTime = Date()
}
@IBAction func buttonEndTime(_ sender: UIButton) {
endTime = Date()
let formatter = DateComponentsFormatter()
formatter.allowedUnits = [.second]
formatter.unitsStyle = .full
let difference = formatter.string(from: startTime, to: endTime)!
print(difference)//output "8 seconds"
}
输出
8秒
您还可以使用默认的日期组件,并根据这些组件比较您的日期,您可以得到年、月、日等的差异
let dateString1 = "2019-03-07T14:20:20.000Z"
let dateString2 = "2019-03-07T14:20:40.000Z"
//set date formate
let Dateformatter = DateFormatter()
Dateformatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
//convert string to date
let dateold = Dateformatter.date(from: dateString1)!
let datenew = Dateformatter.date(from: dateString2)!
//use default datecomponents with two dates
let calendar1 = Calendar.current
let components = calendar1.dateComponents([.year,.month,.day,.hour,.minute,.second], from: dateold, to: datenew)
let seconds = components.second
print("Seconds: \(seconds)")
日期可能重复。timeIntervalSince(:)将提供以秒为单位的间隔。通过%60操作,您是否正在尝试将其转换为分和秒?正如您的代码所示,
difference
是现在到captureStartDateTime
之间的秒数,感谢您的分享,但是仍然interval没有给出精确的秒数。如果前一个日期和当前日期之间有10-15秒的时间,则会有差异。我也使用了NSCalendar,但它仍然没有给出准确的答案。你需要用更具体的细节更新你的问题。显示正在使用的确切值以及实际和预期结果。我需要在两次单击按钮之间获得秒数,因此在单击一次按钮时,我已将日期检索为captureStartDateTime,在单击第二次按钮时,我检索当前日期和时间,并尝试在间隔内查找秒数。