首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用HealthKit从特定日期获得准确的24小时睡眠数据?

如何使用HealthKit从特定日期获得准确的24小时睡眠数据?
EN

Stack Overflow用户
提问于 2018-01-24 09:44:59
回答 1查看 735关注 0票数 0

我熟悉获取睡眠数据的典型方法,但事实证明,在特定的24小时窗口中获取几个小时的睡眠时间要困难得多。

我可以设置一个谓词来获取在特定时间内开始或结束的样本,但很多时候这些样本跨越了日期界限。如果我晚上10点上床睡觉,凌晨4点起床,然后从早上5点睡到8点,那么很难从10-4样本中提取昨天的部分。

典型的谓词可能如下所示(使用以下日期扩展):

代码语言:javascript
复制
extension Date {
    var today: Date {
        return Calendar.current.date(byAdding: .day, value: 0, to: midnight)!
    }
    var yesterday: Date {
        return Calendar.current.date(byAdding: .day, value: -1, to: midnight)!
    }
}

let predicate = HKQuery.predicateForSamples(withStart: Date().yesterday, end: Date().today, options: [])

然后获取一个样本,然后做一些事情来获得秒/分钟/小时:

代码语言:javascript
复制
let seconds = sample.endDate.timeIntervalSince(sample.startDate)

但是,当开始日期不一定是昨天,或者结束日期不一定在今天之前时,这就会产生问题。

我可以开始在开始和结束日期周围做一些特殊的大小写,但它变得有点复杂。有没有一种简单的方法可以让你从昨天开始就睡上几个小时(从午夜到午夜的准确24小时窗口)?我觉得我一定是误解了一些关于睡眠查询的基础知识,或者是关于这方面的时间数学。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-25 00:29:53

HealthKit无法对HKCategorySample类型的查询结果进行插值。您的查询必须与您想要处理的全部睡眠样本相匹配,并且您必须自己计算,以计算出有多少样本落在您感兴趣的日期间隔内。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48413614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档