• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ios > iOShealthkit获取当天数据少八小时的问题

iOShealthkit获取当天数据少八小时的问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了sql获取当天数据,oracle 获取当天数据,mysql获取当天数据,oracle查询当天数据,mysql查询当天数据等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: iOS health kit获取当天数据 少八小时的问题
描述:

本帖最后由 jeffahjd 于 2016-06-23 11:15:46 编辑

healthkit步行数

各位,近来闲着无聊就看了一下iOS的healthkit的功能,然后在看了一下官方文档后就开始编写了一个小的demo。可是在demo编写完成后发现,在获得到health的权限后获取数据的时候居然是从八点后开始获得到数据,从而每次获取当天的数据时候就会少八小时,而获取全部数据的时候是正确的。后来我看了博客后发现说是自己自定义一下就可以了。可是我在写了一个当天时间的零点开始方法和当天结束时间后发现它还是从八点后开始获取数据,这个事情有人遇到过吗?又是怎么解决的啊
#import "SecondViewController.h"
#import <HealthKit/HealthKit.h>
@interface SecondViewController ()
@property (nonatomic, strong) HKHealthStore *healthStore;
@end
@implementation SecondViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    
    if(![HKHealthStore isHealthDataAvailable])
    {
        NSLog(@"设备不支持");
    }
    
    self.healthStore = [[HKHealthStore alloc] init];
    
    HKObjectType *stepCount = [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount];
    
    NSSet *healthSet = [NSSet setWithObjects:stepCount, nil];
    
    [self.healthStore requestAuthorizationToShareTypes:nil readTypes:healthSet completion:^(BOOL success, NSError * _Nullable error) {
        if (success)
        {
            NSLog(@"获取步数权限成功");
            [self readStepCount];
        }
        else
        {
            NSLog(@"获取步数权限失败");
        }
    }];
    
}
- (void)readStepCount
{
    HKSampleType *sampleType = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount];
    
    NSPredicate *predicate = [HKQuery predicateForSamplesWithStartDate:[self getStartTime] endDate:[self getEndTime] options:HKQueryOptionNone];
    NSSortDescriptor *start = [NSSortDescriptor sortDescriptorWithKey:HKSampleSortIdentifierStartDate ascending:NO];
    NSSortDescriptor *end = [NSSortDescriptor sortDescriptorWithKey:HKSampleSortIdentifierEndDate ascending:NO];
    HKSampleQuery *sampleQuery = [[HKSampleQuery alloc] initWithSampleType:sampleType predicate:predicate limit:0 sortDescriptors:@[start,end] resultsHandler:^(HKSampleQuery * _Nonnull query, NSArray<__kindof HKSample *> * _Nullable results, NSError * _Nullable error) {
        if(!error && results){
            NSLog(@"%@",results);
            int sum=0;
            for (int i=0; i<results.count; i++) {
                HKQuantitySample *result = results[i];
                HKQuantity *quantity = result.quantity;
                NSString *stepStr = (NSString *)quantity;
                NSString *aaaa = [[NSString stringWithFormat:@"%@",stepStr] stringByReplacingOccurrencesOfString:@" count" withString:@""];
                sum+= [aaaa intValue];
            }
            NSLog(@"%d",sum);
        }
        
    }];
    [self.healthStore executeQuery:sampleQuery];
}
/**
 获取当前时区的时间
 */
-(NSDate *)getEndTime{
    NSDate *date = [[NSDate alloc]init];
    NSTimeZone *zone = [NSTimeZone systemTimeZone];
    NSInteger interval = [zone secondsFromGMTForDate:date];
    NSDate *nowDate = [date dateByAddingTimeInterval:interval];
    return nowDate;
}
/**
 获取开始时间 当天0时0分0秒
 */
-(NSDate *) getStartTime{
    NSDateFormatter *datef = [[NSDateFormatter alloc]init];
    datef.dateFormat = @"yyyy-MM-dd";
    NSString *stringdate = [datef stringFromDate:[self getEndTime]];
    NSDate *tdate = [datef dateFromString:stringdate];
    NSTimeZone *zone = [NSTimeZone systemTimeZone];
    NSInteger interval = [zone secondsFromGMTForDate:tdate];
    NSDate *nowday = [tdate dateByAddingTimeInterval:interval];
    return nowday;
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
@end


解决方案1:

NSTimeZone *zone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];试试


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • iOShealthkit获取当天数据少八小时的问题

相关文章

  • 2017-06-05 iOSAPP进入后台锁屏一段时间在打开就闪退
  • 2017-06-05 怎么才能快速减肥如果有很多条联系人怎么才能快速的显示出来呢?
  • 2017-06-05 qq微信下载手机版QQ微信添加下载APP下栏有什么方式解决?
  • 2017-06-05 指向@implementation的EXC_BAD_ACCESS报错?
  • 2017-06-05 apache配置mac自带的apache配置文件打开显示问题
  • 2017-06-05 IOSAFNPOST请求Code=-1011internalservererror500。
  • 2017-06-05 Xcode的快捷键?就是弄出下面视图显示的快捷键
  • 2017-06-05 iosstatusbar背景透明能看到下层view的数据
  • 2017-06-05 iOSUITableViewCell按钮点击状态为什么刷新以后会变回到为未点击状态
  • 2017-06-05 摇号审核通过已经通过审核的应用分享时仍然显示"未审核应用"

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • ios现在主流的开发语言是什么啊
    • Alamofire如何将request添加到一个队列里面,顺序执行??
    • iOS怎么把button的边缘变成虚线
    • 调用自定义uiview的方法
    • iOSAppIOS新闻类APP如何实现
    • 如何定位到这个bug的代码行
    • 如何post提交XML数据加载webview或者wkwebview
    • 微信链接怎样实现已装微信的用微信APP打开,没装的用网页打开
    • 移动手机电视客户端现在移动端手机游戏已经不用c++开发了吗?
    • web游戏服务端移动端Web如何实现IOS双击事件。

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有