1、获取当前时间
//获取当前时间-(NSString*)currentDateStr{NSDate*currentDate=[NSDate date];//获取当前时间,日期NSDateFormatter*dateFormatter=[[NSDateFormatter alloc]init];// 创建一个时间格式化对象[dateFormatter setDateFormat:@"YYYY/MM/dd hh:mm:ss SS "];//设定时间格式,这里可以设置成自己需要的格式NSString*dateString=[dateFormatter stringFromDate:currentDate];//将时间转化成字符串returndateString;}
2、获取当前时间戳
pragma mark 当前时间戳+(NSString*)nowTimeInterval{// 现在的时间戳// 获取当前时间0秒后的时间NSDate*date=[NSDate dateWithTimeIntervalSinceNow:0];// *1000 是精确到毫秒,不乘就是精确到秒NSTimeInterval time=[date timeIntervalSince1970]*1000;NSString*timeStr=[NSString stringWithFormat:@"%.0f",time];returntimeStr;}
3、时间戳 转日期
#pragmamark 时间戳 转日期 (yyyy-MM-dd)+(NSString*)timeWithYearMonthDayCountDown:(NSString*)timestamp{// 时间戳转日期// 传入的时间戳timeStr如果是精确到毫秒的记得要/1000NSTimeInterval timeInterval=[timestamp doubleValue]/1000;NSDate*detailDate=[NSDate dateWithTimeIntervalSince1970:timeInterval];NSDateFormatter*dateFormatter=[[NSDateFormatter alloc]init];// 实例化一个NSDateFormatter对象,设定时间格式,这里可以设置成自己需要的格式[dateFormatter setDateFormat:@"yyyy-MM-dd"];NSString*dateStr=[dateFormatter stringFromDate:detailDate];returndateStr;}
4、字符串转时间戳
// 字符串转时间戳 如:2017-4-10 17:15:10 (精确到毫秒*1000)+(NSString*)getTimeStrWithString:(NSString*)str{NSDateFormatter*dateFormatter=[[NSDateFormatter alloc]init];// 创建一个时间格式化对象[dateFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];//设定时间的格式NSDate*tempDate=[dateFormatter dateFromString:str];//将字符串转换为时间对象NSString*timeStr=[NSString stringWithFormat:@"%ld",(long)[tempDate timeIntervalSince1970]*1000];//字符串转成时间戳,精确到毫秒*1000returntimeStr;}
5、时间戳 转换成 (天 时 分 秒)
#pragmamark 转换成 (天 时 分 秒)+(NSString*)timeFormatted:(NSInteger)totalSeconds{// NSInteger seconds = totalSeconds % 60;// NSInteger minutes = (totalSeconds / 60) % 60;// NSInteger hours = totalSeconds / 3600 % 24;// NSInteger day = totalSeconds / 3600 / 24;NSInteger day=(totalSeconds/(3600*24));NSInteger hour=((totalSeconds-day*24*3600)/3600);NSInteger minute=(totalSeconds-day*24*3600-hour*3600)/60;NSInteger second=totalSeconds-day*24*3600-hour*3600-minute*60;return[NSString stringWithFormat:@"%ld天%ld时%ld分%ld秒",day,hour,minute,second];}
6、时间戳转日期
#pragmamark 时间戳 转日期 (yyyy-MM-dd HH:mm:ss SS)// 时间戳转时间,时间戳为13位是精确到毫秒的,10位精确到秒+(NSString*)dateWithTimeInterval:(NSString*)timeStr{// 传入的时间戳timeStr如果是精确到秒的记得要/1000NSTimeInterval timeInterval=[timeStr doubleValue]/1000;NSDate*detailDate=[NSDate dateWithTimeIntervalSince1970:timeInterval];NSDateFormatter*dateFormatter=[[NSDateFormatter alloc]init];// 实例化一个NSDateFormatter对象,设定时间格式,这里可以设置成自己需要的格式[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss SS"];NSString*dateStr=[dateFormatter stringFromDate:detailDate];returndateStr;}
7、字符串转时间戳
// 字符串转时间戳 如:2017-4-10 17:15:10-(NSString*)getTimeStrWithString:(NSString*)str{NSDateFormatter*dateFormatter=[[NSDateFormatter alloc]init];// 创建一个时间格式化对象[dateFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];//设定时间的格式NSDate*tempDate=[dateFormatter dateFromString:str];//将字符串转换为时间对象NSString*timeStr=[NSString stringWithFormat:@"%ld",(long)[tempDate timeIntervalSince1970]*1000];//字符串转成时间戳,精确到毫秒*1000returntimeStr;}
8、获取某一天是星期几
// 1、获取某一天是星期几+(NSString*)getWeekDayFordate:(NSTimeInterval)data{NSArray*weekday=[NSArray arrayWithObjects:[NSNull null],@"7",@"1",@"2",@"3",@"4",@"5",@"6",nil];NSDate*newDate=[NSDate dateWithTimeIntervalSince1970:data];NSCalendar*calendar=[[NSCalendar alloc]initWithCalendarIdentifier:NSCalendarIdentifierGregorian];NSDateComponents*components=[calendar components:NSCalendarUnitWeekday fromDate:newDate];NSString*weekStr=[weekday objectAtIndex:components.weekday];returnweekStr;}
#pragmamark 1、获取某一天是星期几+(NSString*)getWeekDayForDateTimeStamp:(NSTimeInterval)timeStamp{NSArray*weekday=[NSArray arrayWithObjects:[NSNull null],@"周日",@"周一",@"周二",@"周三",@"周四",@"周五",@"周六",nil];NSDate*newDate=[NSDate dateWithTimeIntervalSince1970:timeStamp];NSCalendar*calendar=[[NSCalendar alloc]initWithCalendarIdentifier:NSCalendarIdentifierGregorian];NSDateComponents*components=[calendar components:NSCalendarUnitWeekday fromDate:newDate];NSString*weekStr=[weekday objectAtIndex:components.weekday];returnweekStr;}
9、获取当月的天数
+(NSInteger)getNumberOfDaysInCurrentMonth{NSCalendar*calendar=[NSCalendar currentCalendar];NSRange range=[calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:[NSDate date]];NSUInteger numberOfDaysInMonth=range.length;returnnumberOfDaysInMonth;}
10、刚刚、几分钟之前、几小时之前、几天、几月、几年之前
+(NSString*)jk_time1TurnStringTimestamp:(NSString*)timestamp{NSDate*date=[NSDate dateWithTimeIntervalSince1970:[timestamp doubleValue]];NSTimeInterval timeInterval=[date timeIntervalSinceNow];NSInteger seconds=round(timeInterval);if(seconds<0){return@"";}if(seconds<60){return@"刚刚";}elseif(seconds<3600){return[NSString stringWithFormat:@"%ld分钟之前",seconds/60];}elseif(seconds<3600*24){return[NSString stringWithFormat:@"%ld小时之前",seconds/(3600)];}elseif(seconds<(3600*24*30)){return[NSString stringWithFormat:@"%ld天之前",seconds/(3600*24)];}elseif(seconds<(3600*24*30*12)){return[NSString stringWithFormat:@"%ld月之前",seconds/(3600*24*30)];}else{return[NSString stringWithFormat:@"%ld年之前",seconds/(3600*24*30*12)];}}
11、两个日期NSDate之间相隔多少天(月、年)
1.根据两个日期(NSDate),算出它们相差多少天。
解决方法
NSCalendar类提供了计算差值的接口,可以计算两个日期相差多少年月日时分秒等
代码
//创建两个日期NSDateFormatter*dateFormatter=[[NSDateFormatter alloc]init];[dateFormatter setDateFormat:@"yyyy-MM-dd"];NSDate*startDate=[dateFormatter dateFromString:@"2017-07-26"];NSDate*endDate=[dateFormatter dateFromString:@"2017-09-01"];//利用NSCalendar比较日期的差异NSCalendar*calendar=[NSCalendar currentCalendar];/**
* 要比较的时间单位,常用如下,可以同时传:
* NSCalendarUnitDay : 天
* NSCalendarUnitYear : 年
* NSCalendarUnitMonth : 月
* NSCalendarUnitHour : 时
* NSCalendarUnitMinute : 分
* NSCalendarUnitSecond : 秒
*/NSCalendarUnit unit=NSCalendarUnitDay;//只比较天数差异//比较的结果是NSDateComponents类对象NSDateComponents*delta=[calendar components:unit fromDate:startDate toDate:endDate options:0];