项目需求,要求获取用户进入某一个界面的时间和退出界面的时间,当时用的系统时间,但是有些用户手机时间会时间不准确,这就导致传到后台的时间不准确,所以现在需要获取网络时间,相对准确。
网络上搜索了一下,可以说都是那一个模版的变形。天下文章一大抄,充分体现出来了。我也是抄的,但是改了一部分,不能说是原创吧,但是也不算转载吧,所以就请大家多吐槽,这样我才能成长。
好了废话不多说,上代码
+ (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];
}];
}
由于是部分代码,请大家做个参考,有错误的地方还请大家指正。