OC_时间NSDate、日历NSCalendar

来源:互联网 发布:卖家版淘宝下载 编辑:程序博客网 时间:2024/05/14 15:24

NSData

//在OC中,Foundation框架为我们提供了强大的时间操作类‘NSDate’,该类封装了各种处理时间和日期的API

//获取系统当前时间(GMT 格林尼治时间,与北京时间相差8小时 北京时间 = GMT + 8)

NSDate *date1 = [NSDate date];NSLog(@"%@",date1);

//(NATimeInterval) 是一个以秒为单位的时间片,也叫时间撮

NSDate *date2 = [NSDate dateWithTimeIntervalSinceNow:3600*8];//北京时间NSLog(@"%@",date2);

//距离1970.1.1日期tiimeInterval时间撮的时间

NSDate *date3 = [NSDate dateWithTimeIntervalSince1970:120];//两分钟前

//距离sinceDate日期timeInterval时间撮的时间

NSDate *date4 = [NSDate dateWithTimeInterval:120 sinceDate:[NSDate date]];NSLog(@"%@",date4);

//通过时间追加创建NSDate

NSDate *date5 = [date4 dateByAddingTimeInterval:120];NSLog(@"%@",date5);

//日期比较
//1.两个日期的时间撮

NSTimeInterval timeIntervalSince1970 = [[NSDate date]timeIntervalSince1970];NSLog(@"timeIntervalSince1970 = %f",timeIntervalSince1970);NSTimeInterval timeIntervalSinceNow = [[NSDate date]timeIntervalSinceNow];NSlog(@"timeIntervalSinceNow = %f",timeIntervalSinceNow);NSDate *dateNow = [NSDate date];NSDate *anhourago = [NSDate dateWithTimeInterval:-3600 sinceDate:dateNow];NSLog(@"%@",anhourago);

//判断两个日期是否相等

bool flag = [dateNow isEqualToDate:date1];if (flag) {NSLog(@"dateNow = date1");}else{NSLog(@"no");}

    NSDate *date6 = [dateNow earlierDate:anhourago];    if ([date6 isEqualToDate:anhourago]){        NSLog(@"anhourago 是较早的时间");    }    else{        NSLog(@"dateNow 是较早的时间");    }NSDate *date7 = [dateNow laterDate:anhourago];if ([date7 isEqualToDate:anhourago]){    NSLog(@"anhourago是较晚的时间");}else{    NSLog(@"dateNow是较晚的时间");}NSComparisonResult comparisonResult = [dateNow compare:anhourago];switch (comparisonResult){    case NSOrderedAscending:{        NSLog(@"dateNow < anchorage");        break;    }    case NSOrderedSanme:{        NSLog(@"=");        break;    }    case NSOrderedDescending:{        NSLog(@"dateNow > anhourago");        break;          }}

日历

NSCalendar *currentCalendar = [NSCalendar currentCalendar];NSDateComponents *components = [[NSDateComponents alloc]init];components.year = 2016;components.month = 8;components.day=12;components.hour=12+8;components.minute=14;components.second=55;NSDate *date8 = [currentCalendar dateFromComponents:components];NSLog(@"%@",date8);

//时区
//NSTimeZone
//列出所有的时区

NSArray *array1 =[NSTimeZone knownTimeZoneNames];NSLog(@"%@",array);

//指定名称参数创建一个时区

NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"Asia/Shanghai"];

//指定时区缩写创建一个时区 UTC世界。。。什么鬼

NSTimeZone *timeZone2 = [NSTimeZone timeZoneWithAbbreviation:@"PRC"];

//如何将NSDate转换成字符串类型

NSDateFormatter *dateFormatter = [NSDateFormatter new];

//设置时区(默认时区)

dateFormatter.timeZone = [NSTimeZone defaultTimeZone];//本地时区

//设置时间输出格式

//[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];[dateFormatter setDateFormat:@"yyyy年MM月dd日 HH时mm分ss秒"];NSString *string1 = [dateFormatter stringFromDate:[NSDate date]];NSLog(@"%@",string1);

//如何将字符串转换成NSDate类型

NSString *string2 = @"1970-01-01 08:00:00";[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];NSDate *date9 = [dateFormatter dateFromString:string2];NSLog(@"%@",date9);NSTimeInterval timeInterval = date9.timeIntervalSinceNow;NSLog(@"%f",-timeInterval);NSTimeInterval timeInterval2 = [[NSDate date]timeIntervalSince1970];NSLog(@"%f",timeInterval2);/*

dateString 格式为:2016-08-08 18:00:00
传入时间 与现在时间 差距60秒内,方法输出 @“刚刚”
差距 1小时之内,输出@“xx分钟前”
差距 1-24小时以内 xx小时前
大于30天 xx月前
大于360天 完整日期

*/NSString *str0 = @"2016-08-13 13:50:00";Time *time = [[Time alloc]init];[time timeDiff:str0];

//NSDate
//在OC中,Foundation框架为我们提供了强大的时间操作类‘NSDate’,该类封装了各种处理时间和日期的API

//转化的方法

NSDateFormatter *dateFormatter = [NSDateFormatter new];[dateFormatter setTimeZone:[NSTimeZone defaultTimeZone]];[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];NSDate *date1 = [dateFormatter dateFromString:date];NSTimeInterval timeInterval1 = date1.timeIntervalSinceNow;float a = -(timeInterval1/60);int b;NSLog(@"%f",-timeInterval1);if (a < 1){    NSLog(@"刚刚");}else if (a >= 1 && a< 60){    NSLog(@"%d分钟前")}else if (a >= 60 &&a<60*24){    NSLog(@"%d小时前",b);}else if (a >=60*24 && a<60*24*30){    b = a/60/24;    NSLog(@"%d天前",b);}else if(a >=60*24*30 && a<60*24*30*12){    b = a/(60*24*30);    NSLog(@"%d个月前",b);}else if (a>60*24*30*12){    NSLog(@"%@",date);}
0 0