今天整理一下时间转换的类。
1、获取当前时间字符串

/***  当前时间字符串**  @param format 时间格式 @"yyyy-MM-dd HH:mm:ss"**  @return 时间字符串*/
+ (NSString *)dateStringWithFormat:(NSString *)format{NSDate *now = [NSDate date];NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];[dateFormatter setDateFormat:format];//[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];NSString *dateString = [dateFormatter stringFromDate:now];return  dateString;
}

2、用格式:时间获取正确时区的时间字符串

/**
*  用格式:时间获取正确时区的时间字符串
*
*  @param format 时间格式 @"yyyy-MM-dd HH:mm:ss"
*  @param date   时间
*
*  @return 时间字符串
*/
+ (NSString *)dateStringWithFormat:(NSString *)format date:(NSDate *)date{NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];[dateFormatter setDateFormat:format];//[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:8]];//[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];NSString *dateString = [dateFormatter stringFromDate:date];return  dateString;
}

3、时间字符串 获取格式的时间字符串

/**
*  时间字符串 获取格式的时间字符串
*
*  @param format 时间格式
*  @param date   时间
*
*  @return 时间字符串
*/
+ (NSString *)dateStringWithFormat:(NSString *)format dateString:(NSString *)date{NSDateFormatter *formatter = [[NSDateFormatter alloc] init];[formatter setLocale:[NSLocale currentLocale]];[formatter setDateFormat:format];NSDate *fDate = [formatter dateFromString:date];return [formatter stringFromDate:fDate];
}

4、时间 距离现在的天数

/**
*  时间 距离现在的天数
*
*  @param date 时间
*
*  @return 返回天数
*/
+ (int)daysFromDate:(NSDate *)date{NSCalendarUnit unit = NSCalendarUnitEra|NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay;NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];//    NSDateComponents *start = [gregorian components:unit fromDate:[NSDate date]];//    NSDateComponents *end = [gregorian components:unit fromDate:date];return (int)[[gregorian components:unit fromDate:date toDate:[NSDate date] options:0] day];
}

5、获取距离当前的时间 聊天时间

/**
*  获取距离当前的时间 聊天时间
*
*  @param date 日期
*
*  @return 日期-昨天-前天-2015-01-01
*/
+ (NSString *)dateStringForChat:(NSDate *)date{int days = [self daysFromDate:date];NSString *dateString;if (days == 0) {dateString = [self dateStringWithFormat:@"HH:mm" date:date];}else if (days == 1) {dateString = [NSString stringWithFormat:@"昨天 %@",[self dateStringWithFormat:@"HH:mm" date:date]];}else if (days == 2) {dateString = [NSString stringWithFormat:@"前天 %@",[self dateStringWithFormat:@"HH:mm" date:date]];}else {dateString = [self dateStringWithFormat:@"yyyy-MM-dd HH:mm" date:date];}return dateString;
}

6、NSNumber转换成时间字符串

/**
*  NSNumber转换成时间字符串
*
*  @param format    日期格式
*  @param number 时间NSNumber
*
*  @return 时间字符串
*/
+ (NSString *)dateStringWithFormat:(NSString *)format number:(NSNumber *)number{NSString*str=nil;//时间戳if (![number isKindOfClass:[NSNumber class]]) {str=(NSString*)number;//时间戳}else{str=[number stringValue];//时间戳}NSTimeInterval time =[str doubleValue]+28800;//因为时差问题要加8小时 == 28800 secNSDate*detaildate=[NSDate dateWithTimeIntervalSince1970:time/1000];//实例化一个NSDateFormatter对象NSDateFormatter*dateFormatter = [[NSDateFormatter alloc]init];//设定时间格式,这里可以设置成自己需要的格式[dateFormatter setDateFormat:format];NSString*currentDateStr = [dateFormatter stringFromDate:detaildate];return currentDateStr;
}

7、时间字符串转换成时间字符串

/**
*  时间字符串转换成时间字符串
*
*  @param format    日期格式
*  @param string 时间字符串
*
*  @return 时间字符串
*/
+ (NSString *)dateStringWithStringFormat:(NSString *)format dateString:(NSString *)string{id result;NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];result=[formatter numberFromString:string];if(result){double timesTamp = [string doubleValue];NSDate *date = [NSDate dateWithTimeIntervalSince1970:timesTamp/1000];NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];[dateFormatter setDateFormat:format];//[dateFormatter setDateStyle:NSDateFormatterMediumStyle];//[dateFormatter setTimeStyle:NSDateFormatterShortStyle];[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:8]];NSString*confromTimespStr = [dateFormatter stringFromDate:date];return confromTimespStr;}return nil;
}

8、获取某年某月的天数

/**
*  获取某年某月的天数
*
*  @param year    年
*  @param month 月
*
*  @return 多少天
*/
+ (NSInteger)howManyDaysInThisYear:(NSInteger)year withMonth:(NSInteger)month{if((month == 1) || (month == 3) || (month == 5) || (month == 7) || (month == 8) || (month == 10) || (month == 12))return 31 ;if((month == 4) || (month == 6) || (month == 9) || (month == 11))return 30;if((year % 4 == 1) || (year % 4 == 2) || (year % 4 == 3)){return 28;}if(year % 400 == 0)return 29;if(year % 100 == 0)return 28;return 29;
}

9、在当前日期时间加上 某个时间段(传负数即返回当前时间之前x月x日的时间)

/***  ** 在当前日期时间加上 某个时间段(传负数即返回当前时间之前x月x日的时间)**  @param year   当前时间若干年后 (传负数为当前时间若干年前)*  @param month  当前时间若干月后  (传0即与当前时间一样)*  @param day    当前时间若干天后*  @param hour   当前时间若干小时后*  @param minute 当前时间若干分钟后*  @param second 当前时间若干秒后**  @return 处理后的时间字符串*/
+ (NSString *)dateStringAfterlocalDateForYear:(NSInteger)year Month:(NSInteger)month Day:(NSInteger)day Hour:(NSInteger)hour Minute:(NSInteger)minute Second:(NSInteger)second
{// 当前日期NSDate *localDate = [NSDate date]; // 为伦敦时间// 在当前日期时间加上 时间:格里高利历NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSCalendarIdentifierGregorian];NSDateComponents *offsetComponent = [[NSDateComponents alloc]init];[offsetComponent setYear:year ];  // 设置开始时间为当前时间的前x年[offsetComponent setMonth:month];[offsetComponent setDay:day];[offsetComponent setHour:(hour+8)]; // 中国时区为正八区,未处理为本地,所以+8[offsetComponent setMinute:minute];[offsetComponent setSecond:second];// 当前时间后若干时间NSDate *minDate = [gregorian dateByAddingComponents:offsetComponent toDate:localDate options:0];NSString *dateString = [NSString stringWithFormat:@"%@",minDate];return dateString;
}

10、日期格式转换

/************日期格式请传入:2013-08-05 12:12:12;如果修改日期格式,比如:2013-08-05,则将[df setDateFormat:@"yyyy-MM-dd HH:mm:ss"];修改为[df setDateFormat:@"yyyy-MM-dd"];***********/
+(int)compareDate:(NSString*)date01 withDate:(NSString*)date02{int ci;NSDateFormatter *df = [[NSDateFormatter alloc]init];[df setDateFormat:@"yyyy-MM-dd"];NSDate *dt1;NSDate *dt2;dt1 = [df dateFromString:date01];dt2 = [df dateFromString:date02];NSComparisonResult result = [dt1 compare:dt2];switch (result){//date02比date01大case NSOrderedAscending: ci=1;break;//date02比date01小case NSOrderedDescending: ci=-1;break;//date02=date01case NSOrderedSame: ci=0;break;default: NSLog(@"erorr dates %@, %@", dt2, dt1);break;}return ci;
}

11、时间格式转换

/**
时间格式转换
@param targetFormat 目标字符串格式
@param changeFormat 改变字符串格式@param valueStr 需要改变的字符串
@return 返回字符串
*/
+(NSString *)endStringFormatTargetFormat:(NSString *)targetFormat changeFormatStrFormat:(NSString *)changeFormat andValueStr:(NSString *)valueStr{NSDateFormatter* dateFormat = [[NSDateFormatter alloc] init];[dateFormat setDateFormat:targetFormat];NSDate *date =[dateFormat dateFromString:valueStr];NSDateFormatter* dateFormat2 = [[NSDateFormatter alloc] init];[dateFormat2 setDateFormat:changeFormat];NSString *publishtimeStr = [dateFormat2 stringFromDate:date];return publishtimeStr;
}

12、判断是否在工作时间内

/**判断是否在工作时间内@param fromdate 开始时间@param toDate 结束时间@return 判断结果*/
+(BOOL)inWorkPeriodFromDate:(NSString *)fromdate toDate:(NSString *)toDate {NSString *dateStr = [self obtainCurrentTimeWithFormatter:@"yyyy-MM-dd HH:mm:ss"];NSString *from = [NSString stringWithFormat:@"%@ %@",dateStr,fromdate];NSString *to = [NSString stringWithFormat:@"%@ %@",dateStr,toDate];NSTimeInterval fromTime = [[self transfromDateFromString:from inFormatter:@"yyyy-MM-dd HH:mm:ss"] timeIntervalSince1970];NSTimeInterval toTime = [[self transfromDateFromString:to inFormatter:@"yyyy-MM-dd HH:mm:ss"] timeIntervalSince1970];NSTimeInterval currentTime = [[NSDate date] timeIntervalSince1970];if (currentTime >fromTime && currentTime < toTime) {return YES;NSLog(@"是当前时间区内");}else {return NO;}
}

13、获取当月第一天

//获取当月第一天 dateStr 传 @"yyyy-MM-dd"
+ (NSString *)getMonthFirstAndLastDayWith:(NSString *)dateStr{NSDateFormatter *format=[[NSDateFormatter alloc] init];[format setDateFormat:@"yyyy-MM-dd"];NSDate *newDate=[format dateFromString:dateStr];double interval = 0;NSDate *firstDate = nil;NSDate *lastDate = nil;NSCalendar *calendar = [NSCalendar currentCalendar];BOOL OK = [calendar rangeOfUnit:NSCalendarUnitMonth startDate:& firstDate interval:&interval forDate:newDate];if (OK) {lastDate = [firstDate dateByAddingTimeInterval:interval - 1];}else {return @"";}NSDateFormatter *myDateFormatter = [[NSDateFormatter alloc] init];[myDateFormatter setDateFormat:@"yyyy-MM-dd"];NSString *firstString = [myDateFormatter stringFromDate: firstDate];//获取当月的最后一天//    NSString *lastString = [myDateFormatter stringFromDate: lastDate];return firstString;//    return @[firstString, lastString];
}

END.

iOS 时间转换总结相关推荐

  1. iOS时间转换相关整理(附送试用期逻辑处理)

    对于时间转换我们并不陌生,只是不同的后台风格不同,我们请求回来的时间格式也不同! 现整理时间相关点: //从1970年开始到现在经过了多少秒-(NSString *)getTimeSp{NSStrin ...

  2. ios时间转换时间戳问题

    uniapp ios识别不了- 2022-01-10 12:45:32 转不了时间戳 var date = new Date(date.replace(/-/g,'/')).getTime()

  3. 小程序关于ios与安卓时间转换问题

    这段时间在开发过程中遇到的ios与安卓时间转换函数的问题 fnDate(time) {//获取日期 YYMMSS 周几if (!time) {return;}此时time='2022-06-30'// ...

  4. 时间日期大小比较判断,时间戳/时间 - 转换

    时间日期大小比较判断,时间戳/时间 - 转换 当前时间转为时间戳: var currentTimestamp = new Date().getTime(); 当前时间对象 var curDate = ...

  5. android 布局可大可小,UI设计教程之:ios与android ui适配(将IOS UI转换成Android经验畅谈)...

    内容提要:这是UI设计系列教程之ios与android ui适配经验畅谈.文章作者介绍了自己将IOS UI转换成Android经验,包括:不要直接转换.了解单位和组件缩放格式.屏幕尺寸DP和像素的换算 ...

  6. php 当前时间转换,php时间转换

    UNIX时间戳和格式化日期是我们常打交道的两个时间表示形式,Unix时间戳存储.处理方便,但是不直观,格式化日期直观,但是处理起来不如Unix时间戳那么自如,所以有的时候需要互相转换,下面给出互相转换 ...

  7. 王者荣耀账号转服务器,王者荣耀安卓IOS怎么转换-帐号转区方法介绍

    王者荣耀安卓和IOS怎么转换?转区功能终于时装了,想要安卓转IOS或者反过来的朋友要注意啦,小编今天就为大家带来一篇王者荣耀帐号转区方法介绍,希望可以让大家得到一些帮助. 王者荣耀怎么转移号 经过了长 ...

  8. 时间戳与时间转换、js时间戳判定是 今天、昨天还是更前的日子

    //1. js时间戳判定是否是 -1 今天 0 昨天 1更前的日子 console.log(_GetDateStr(1572431608)) //2019-10-30 18:40:04 functio ...

  9. 微信小程序安卓(Android) /苹果(IOS)时间戳转换NaN兼容性问题

    微信小程序(Android / IOS)是戳转换问题 1.定义时间转换的函数 function formatNumber(n){n = n.toString()return n[1] ? n : '0 ...

最新文章

  1. PE文件和COFF文件格式分析——RVA和RA相互计算
  2. MYSQL中LIMIT用法_后台分页
  3. 【计算机网络】网络安全 : 公钥分配 ( 公钥使用者 | 公钥分配 | CA 证书格式 | CA 证书吊销 )
  4. 如何获取当前点击元素的某个子元素
  5. 考研专业课计算机网络调剂,计算机网络信息中心2019年硕士研究生接收调剂信息公告...
  6. Oracle数据库安然计谋分析(二)
  7. python的json dump_python中json.dump和json.dumps的区别
  8. 【tyvj1520】 树的直径
  9. bootstrap获取选中行的主键_深入分析Mybatis 使用useGeneratedKeys获取自增主键
  10. Qt ::Warning: The name 'layoutWidget' (QWidget)...
  11. PHP中数据类型转换有多少种,PHP中数据类型转换的三种方式
  12. 框架对比_2020 年前端框架性能对比和评测
  13. 初用WEB IOU,IE LAB备战启航
  14. 视频目标跟踪算法Mean Shift和Particle Filter
  15. 用React加CSS3实现微信拆红包动画
  16. 指派问题的遗传算法求解 Java实现
  17. 虚拟机ubuntu与真实机实现实现复制粘贴、传输文件
  18. 如何提高迅雷下载速度
  19. 2018年银联红包领取方法
  20. 国际会计准则IAS 和 IFRS

热门文章

  1. 敏捷开发之产品需求模板
  2. ANSYS 经典界面绘图控制小技巧
  3. CSDN博客的积分计算方法和博客排名规律
  4. oracle数据库怎么调用函数,Oracle 11g调用函数几种常用方法
  5. 欧洲杯决赛谁能称王 葡萄牙支持率力压法国
  6. c语言常用的关键词,【必读】超全的C语言基础知识大全
  7. AOP 的详细说明以及基本的使用
  8. 实现图片放大缩小和移动 C#
  9. 12球称重C语言算法,12小球称重问题
  10. 一个简单木马程序的实现