您的位置:首页 > 理论基础 > 计算机网络

获取网络时间

2015-12-08 14:49 441 查看
{
NSURLConnection *_connection;
void(^_netWorkTimeBlock)(NSString *netWorkTime);
}
/**
*  获取网络时间
*
*  @param nowNetWorkTimeBlock 返回时间   /  或者无网络状态信息
*/
- (void)getNetworkTimeBlock:(void(^)(NSString *nowNetWorkTime))nowNetWorkTimeBlock
{
if (![self isConnectNetWork]) {
if (nowNetWorkTimeBlock) {
nowNetWorkTimeBlock(@"");
return;
}
}

NSString *urlString = @"http://www....";
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
_connection = [NSURLConnection connectionWithRequest:request delegate:self];
_netWorkTimeBlock = ^(NSString *netWorkTime){
if (nowNetWorkTimeBlock) {
nowNetWorkTimeBlock(netWorkTime);
}
};
}

////转换为当地时区的时间
//- (NSDate *)getNowDateFromatAnDate:(NSDate *)anyDate
//{
//    //设置源日期时区
//    NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];//或GMT/UTC
//    //设置转换后的目标日期时区
//    NSTimeZone* destinationTimeZone = [NSTimeZone localTimeZone];
//    //得到源日期与世界标准时间的偏移量
//    NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:anyDate];
//    //目标日期与本地时区的偏移量
//    NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:anyDate];
//    //得到时间偏移量的差值
//    NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset;
//    //转为现在时间
//    NSDate* destinationDateNow = [[NSDate alloc] initWithTimeInterval:interval sinceDate:anyDate];
//    return destinationDateNow;
//}

#pragma mark - NSURLConnectionDataDelegate
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
NSHTTPURLResponse * rp = (NSHTTPURLResponse *)response;
//    NSLog(@"%@",rp.allHeaderFields[@"Date"]);

NSString *timeStr = rp.allHeaderFields[@"Date"];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss zzz"];
NSLocale* local = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
[formatter setLocale:local];
NSDate *date = [formatter dateFromString:timeStr];
//    NSLog(@"%@",date);

NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
[fmt setDateFormat:@"yyyy-MM-dd"];
NSString *dateStr = [fmt stringFromDate:date];
//    NSLog(@"%@",dateStr);

if (_netWorkTimeBlock) {
_netWorkTimeBlock(dateStr);
}
[_connection cancel];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
if (_netWorkTimeBlock) {
_netWorkTimeBlock(@"");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: