iOS获取网络时间,网络获取时间,也就是现实中的时间

来源:互联网 发布:maven 打包 java 工程 编辑:程序博客网 时间:2024/06/01 10:34

项目需求,要求获取用户进入某一个界面的时间和退出界面的时间,当时用的系统时间,但是有些用户手机时间会时间不准确,这就导致传到后台的时间不准确,所以现在需要获取网络时间,相对准确。

网络上搜索了一下,可以说都是那一个模版的变形。天下文章一大抄,充分体现出来了。我也是抄的,但是改了一部分,不能说是原创吧,但是也不算转载吧,所以就请大家多吐槽,这样我才能成长。

好了废话不多说,上代码

+ (void)getInternetDateNowWithType:(NSInteger)type withPagyId:(NSInteger)pageId{

  NSString *urlString = @"http://m.baidu.com";
  urlString = [urlString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
  NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
  [request setURL:[NSURL URLWithString: urlString]];
  [request setCachePolicy:NSURLRequestReloadIgnoringCacheData];
  [request setTimeoutInterval:5];
  [request setHTTPShouldHandleCookies:FALSE];
  [request setHTTPMethod:@"GET"];
// NSError *error = nil;
// NSHTTPURLResponse *response;
// [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
//demo上面为同步请求,这里我们用不到 会出现界面卡顿现象,所以用下面的异步请求替换
  __block NSDate *localeDate;
  [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
//要把网络数据强转 不然用不了下面那个方法获取不到内容(个人感觉,不知道对不)
  NSHTTPURLResponse *responsee = (NSHTTPURLResponse *)response;
  NSString *date = [[responsee allHeaderFields] objectForKey:@"Date"];

  date = [date substringFromIndex:5];
  date = [date substringToIndex:[date length]-4];
  NSDateFormatter *dMatter = [[NSDateFormatter alloc] init];
  dMatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
  [dMatter setDateFormat:@"dd MMM yyyy HH:mm:ss"];
  // NSDate *netDate = [[dMatter dateFromString:date] dateByAddingTimeInterval:60*60*8]; //这个获取时间是正常时间,但是转化后会快8个小时,所以取的没有处理8小时的时间
  NSDate *netDate = [dMatter dateFromString:date];
  NSTimeZone *zone = [NSTimeZone systemTimeZone];
  NSInteger interval = [zone secondsFromGMTForDate: netDate];
  localeDate = [netDate dateByAddingTimeInterval: interval];
  NSLog(@"%@________1",localeDate);
  NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
  [formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
  NSString *nowtimeStr = [NSString string];
  nowtimeStr = [formatter stringFromDate:localeDate];

  }];

}

由于是部分代码,请大家做个参考,有错误的地方还请大家指正。



原创粉丝点击