以小时为单位获取两个日期之间的长度
Get the length between two dates in hours
我正在使用 react-native-healthkit
将睡眠数据读取到我的本机反应应用程序中,我需要找到一种方法来获取总睡眠时间。数据是这样读入的:
如果有人对处理这些数据的最佳方式有任何想法,请告诉我。
If anyone has any ideas on the best way to handle this data please let me know.
这实际上取决于您如何解析 JSON 数据。我不会在这里介绍 JSON 解析,因为有很多很多关于该主题的教程和博客文章。 Here's one 如果您不确定从哪里开始。
您的目标是结束日期对象(Date
in Swift,NSDate
in Objective-C)。例如,如果您将值作为字符串,则可以使用 DateFormatter
将字符串解析为 Date
个对象。
一旦您拥有了这些日期对象,您就可以使用这些对象提供的操作来获得 TimeInterval
,这是一个 double
,表示以秒为单位的时间间隔。通过除以 3600 将其转换为小时数:
let interval = endDate.timeIntervalSince(startDate)
let hours = interval / 3600
extension Date {
/// Hours since current date to given date
/// - Parameter date: the date
func hours(since date: Date) -> Int {
let calendar = Calendar.current
let dateComponents = calendar.dateComponents([.hour], from: self, to: date)
return dateComponents.month ?? 0
}
}
date2.hours(since: date1)
使用 .timeIntervalSince
是一种不好的做法,因为有些时间可能比其他时间短。
试试这个
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
guard let startDate = dateFormatter.date(from: "yourStartDate"),
let endDate = dateFormatter.date(from: "yourEndDate") else {
return
}
let difference = endDate.timeIntervalSince(startDate)
如果您的目标是 iOS 13 岁及以上,您可以使用
endDate.hours(since: startDate)
代替时间间隔
我正在使用 react-native-healthkit
将睡眠数据读取到我的本机反应应用程序中,我需要找到一种方法来获取总睡眠时间。数据是这样读入的:
如果有人对处理这些数据的最佳方式有任何想法,请告诉我。
If anyone has any ideas on the best way to handle this data please let me know.
这实际上取决于您如何解析 JSON 数据。我不会在这里介绍 JSON 解析,因为有很多很多关于该主题的教程和博客文章。 Here's one 如果您不确定从哪里开始。
您的目标是结束日期对象(Date
in Swift,NSDate
in Objective-C)。例如,如果您将值作为字符串,则可以使用 DateFormatter
将字符串解析为 Date
个对象。
一旦您拥有了这些日期对象,您就可以使用这些对象提供的操作来获得 TimeInterval
,这是一个 double
,表示以秒为单位的时间间隔。通过除以 3600 将其转换为小时数:
let interval = endDate.timeIntervalSince(startDate)
let hours = interval / 3600
extension Date {
/// Hours since current date to given date
/// - Parameter date: the date
func hours(since date: Date) -> Int {
let calendar = Calendar.current
let dateComponents = calendar.dateComponents([.hour], from: self, to: date)
return dateComponents.month ?? 0
}
}
date2.hours(since: date1)
使用 .timeIntervalSince
是一种不好的做法,因为有些时间可能比其他时间短。
试试这个
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
guard let startDate = dateFormatter.date(from: "yourStartDate"),
let endDate = dateFormatter.date(from: "yourEndDate") else {
return
}
let difference = endDate.timeIntervalSince(startDate)
如果您的目标是 iOS 13 岁及以上,您可以使用
endDate.hours(since: startDate)
代替时间间隔