当前位置: 首页 > news >正文

seo整站优化推广网站开发实现软硬件环境

seo整站优化推广,网站开发实现软硬件环境,在建设银行网站上买卖贵金属,淘宝app官网iOS开发-格式化时间显示刚刚几分钟前几小时前等 在开发中经常遇到从服务端获取的时间戳,需要转换显示刚刚、几分钟前、几小时前、几天前、年月日等格式。 主要用到了NSCalendar、NSDateComponents这两个类 NSString *result nil;NSCalendarUnit components (NSC…

iOS开发-格式化时间显示刚刚几分钟前几小时前等

在开发中经常遇到从服务端获取的时间戳,需要转换显示刚刚、几分钟前、几小时前、几天前、年月日等格式。

在这里插入图片描述

主要用到了NSCalendar、NSDateComponents这两个类

NSString *result = nil;NSCalendarUnit components = (NSCalendarUnit)(NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitWeekday|NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond);NSDateComponents *nowDateComponents = [[NSCalendar currentCalendar] components:components fromDate:timeNowDate];NSDateComponents *msgDateComponents = [[NSCalendar currentCalendar] components:components fromDate:anotherday];

一、NSCalendar与NSDateComponents

NSCalendar日历,支持日历的计算。
NSDateComponents 一个日期是有年月日时分秒组成的,components这个类的作用就是把日期拆分成单独的年、月、日、时、分、秒

假设有某个时间为customDate,类型为NSDate,如何知道改日期的具体年份、月、日呢。这个就要用到NSDateComponents:
NSDateComponents的方法

- (NSDateComponents *)components:(NSCalendarUnit)unitFlags 
fromDate:(NSDate *)date

unitFlags为枚举类型如下

typedef NS_OPTIONS(NSUInteger, NSCalendarUnit) {NSCalendarUnitEra                = kCFCalendarUnitEra,NSCalendarUnitYear               = kCFCalendarUnitYear,NSCalendarUnitMonth              = kCFCalendarUnitMonth,NSCalendarUnitDay                = kCFCalendarUnitDay,NSCalendarUnitHour               = kCFCalendarUnitHour,NSCalendarUnitMinute             = kCFCalendarUnitMinute,NSCalendarUnitSecond             = kCFCalendarUnitSecond,NSCalendarUnitWeekday            = kCFCalendarUnitWeekday,NSCalendarUnitWeekdayOrdinal     = kCFCalendarUnitWeekdayOrdinal,NSCalendarUnitQuarter            API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)) = kCFCalendarUnitQuarter,NSCalendarUnitWeekOfMonth        API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)) = kCFCalendarUnitWeekOfMonth,NSCalendarUnitWeekOfYear         API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)) = kCFCalendarUnitWeekOfYear,NSCalendarUnitYearForWeekOfYear  API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)) = kCFCalendarUnitYearForWeekOfYear,NSCalendarUnitNanosecond         API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)) = (1 << 15),NSCalendarUnitCalendar           API_AVAILABLE(macos(10.7), ios(4.0), watchos(2.0), tvos(9.0)) = (1 << 20),NSCalendarUnitTimeZone           API_AVAILABLE(macos(10.7), ios(4.0), watchos(2.0), tvos(9.0)) = (1 << 21),
};

常用的类型说明

NSCalendarUnitEra                 -- 纪元单位。  
NSCalendarUnitYear                -- 年单位。
NSCalendarUnitMonth               -- 月单位。范围为1-12
NSCalendarUnitDay                 -- 天单位。范围为1-31
NSCalendarUnitHour                -- 小时单位。范围为0-24
NSCalendarUnitMinute              -- 分钟单位。范围为0-60
NSCalendarUnitSecond              -- 秒单位。范围为0-60
NSCalendarUnitWeekOfMonth         -- 月包含的周数。
NSCalendarUnitWeekOfYear          -- 年包含的周数。
NSCalendarUnitWeekday             -- 工作日单位。范围为1-7

fromDate对应的日期

//根据系统区域设置获取用户的当前日历
NSCalendar *calendar = [NSCalendar currentCalendar];
//获取对应包含年月日的日期组件
NSDateComponents *components = [calendar components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay) fromDate:customDate];
[components year];//年
[components month];//月
[components day];//日

二、实现获取时间戳与当前时间进行比对

从服务端获取的时间戳,需要转换显示刚刚、几分钟前、几小时前、几天前、年月日等格式。
例如显示刚刚

long dateTime = [anotherday timeIntervalSince1970];
long nowTimestamp = [timeNowDate timeIntervalSince1970];if ((dateTime-zeroTime)>0) { //今日if ((nowTimestamp - dateTime) <= 60) {//如果是一分钟内的消息,显示刚刚return @"刚刚";}return timeArr[3];
}

完整代码如下

#import “SDTimeFormatUtil.h”

@implementation SDTimeFormatUtil/**格式化时间@param timeStamp 时间秒数@return 字符串*/
+ (NSString *)timeFormaterWithTimeStamp:(long)timeStamp {@try {NSDate *anotherday = [NSDate dateWithTimeIntervalSince1970:timeStamp];NSDateFormatter *formatter = [[NSDateFormatter alloc]init];[formatter setDateFormat:@"yyyy-MM-dd-HH:mm"];NSDate *timeNowDate = [NSDate date];NSString *nowDate = [formatter stringFromDate:timeNowDate];NSArray *nowtimeArr = [nowDate componentsSeparatedByString:@"-"];NSString *nowYearStr = nowtimeArr[0];NSString *dateStr = [formatter stringFromDate:anotherday];NSArray *timeArr = [dateStr componentsSeparatedByString:@"-"];NSString *yearStr = timeArr[0];NSString *result = nil;NSCalendarUnit components = (NSCalendarUnit)(NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitWeekday|NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond);NSDateComponents *nowDateComponents = [[NSCalendar currentCalendar] components:components fromDate:timeNowDate];NSDateComponents *msgDateComponents = [[NSCalendar currentCalendar] components:components fromDate:anotherday];double OnedayTimeIntervalValue = 24*60*60;  //一天的秒数//为了判断当前时间是否为未来时间BOOL futureTime = ([anotherday timeIntervalSince1970]-[[NSDate date] timeIntervalSince1970]>0)?YES:NO;if (futureTime) {return [NSString stringWithFormat:@"%@/%@/%@",timeArr[0],timeArr[1],timeArr[2]];}int year = [yearStr intValue]-[nowYearStr intValue];if (year<0) {//过去(今年以前)return [NSString stringWithFormat:@"%@/%@/%@",timeArr[0],timeArr[1],timeArr[2]];}int zeroTime = [self zeroOfDate];long dateTime = [anotherday timeIntervalSince1970];long nowTimestamp = [timeNowDate timeIntervalSince1970];if ((dateTime-zeroTime)>0) { //今日if ((nowTimestamp - dateTime) <= 60) {//如果是一分钟内的消息,显示刚刚return @"刚刚";}return timeArr[3];}if ((zeroTime-dateTime)<24*3600) {//昨日return @"昨天";}if([timeNowDate timeIntervalSinceDate:anotherday] < 7 * OnedayTimeIntervalValue) {//一周内NSString *weekDay = [SDTimeFormatUtil weekdayStr:msgDateComponents.weekday];return weekDay;}return [NSString stringWithFormat:@"%@/%@",timeArr[1],timeArr[2]];} @catch (NSException *exception) {//出现异常return [NSString stringWithFormat:@"%ld",timeStamp];}
}+ (NSString*)weekdayStr:(NSInteger)dayOfWeek {static NSDictionary *daysOfWeekDict = nil;daysOfWeekDict = @{@(1):@"星期日",@(2):@"星期一",@(3):@"星期二",@(4):@"星期三",@(5):@"星期四",@(6):@"星期五",@(7):@"星期六",};return [daysOfWeekDict objectForKey:@(dayOfWeek)];
}/**今日时间范围内的具体划分@param date date@return 今日时间格式*/
+ (NSString *)timeStringOfToday:(NSDate *)date {NSDate *today = [NSDate date];NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];unsigned int unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;NSDateComponents *components = [gregorian components:unitFlags fromDate:date toDate:today options:0];/*if ([components hour]) {return [NSString stringWithFormat:@"%ld小时前",(long)[components hour]];}if ([components minute]) {return [NSString stringWithFormat:@"%ld分钟前",(long)[components minute]];}*/if ([components hour]) {//几个小时前return [NSString stringWithFormat:@"%02ld:%02ld",components.hour,components.minute];}if ([components minute]) {//多少分钟前return [NSString stringWithFormat:@"%02ld:%02ld",components.hour,components.minute];}if ([components second]) {return @"刚刚";}return @"刚刚";
}/**今日零点@return 整型*/
+ (int)zeroOfDate {NSCalendar *calendar = [NSCalendar currentCalendar];NSDateComponents *components = [calendar components:NSUIntegerMax fromDate:[NSDate date]];components.hour = 0;components.minute = 0;components.second = 0;NSTimeInterval ts = (int)[[calendar dateFromComponents:components] timeIntervalSince1970];return ts;
}/**返回格式为YYYY-dd-mm的时间字符串@return 时间字符串*/
+ (NSString *)formatterDayDate:(long)timeStamp {NSDate *date = [SDTimeFormatUtil getDateTimeFromTimeStamp:timeStamp];NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];[dateFormatter setDateFormat:@"YYYY-MM-dd"];NSString *dateStr = nil;if (self) {dateStr = [dateFormatter stringFromDate:date];}return dateStr;
}/**将时间戳转换为NSDate类型@param timeStamp timeStamp@return date*/
+ (NSDate *)getDateTimeFromTimeStamp:(long)timeStamp {return [NSDate dateWithTimeIntervalSince1970:timeStamp];
}@end

三、小结

iOS开发-格式化时间显示刚刚几分钟前几小时前等

从服务端获取的时间戳,需要转换显示刚刚、几分钟前、几小时前、几天前、年月日等格式。 NSCalendar与NSDateComponents。

学习记录,每天不停进步。

http://www.yayakq.cn/news/602674/

相关文章:

  • 有没有专门做数据分析的网站wordpress数据库发布文章
  • 网站视频打不开什么原因网站免费注册
  • 政和网站建设三台网站建设哪家专业
  • 门户网站开发方案做一套品牌设计多少钱
  • 瑞安公司做网站浙江省城乡建设厅网站首页
  • 个人网站备案成功后换凡客下载
  • 网站建设公司与前端做设备推广的网站
  • 洛阳网站建设优化案例个人网站模板素材下载
  • 免费的api接口网站网络黄页推广软件下载
  • 听完米课做的网站新建站点步骤
  • 更改网站的布局专业邯郸做网站
  • 书w3school网站建设教程怎样建设公司的网站
  • 企业网站可以做商城类专业做毕业设计网站设计
  • 甘南网站建设去了哪找网站建设公司
  • 兼职做ppt是哪个网站建站之星管理中心
  • 寻找合肥网站建设微信推广时间
  • 网站开发工程师认证建筑网论坛
  • 衡水提供网站制作公司哪家专业wordpress yzipicc
  • 做政务网站杭州建设信用网官网
  • 二个字最吉利最旺财的公司名seo分析师招聘
  • 企业网站建设和维护个人 可以做社交网站
  • 百度网站排名怎么提高wordpress虚拟阅读量
  • 泰安集团网站建设佛山快速排名seo
  • 做外国人的生意哪家网站好seo石家庄
  • 魔方 网站建设 有限公司网站服务器 英文
  • 重庆梁平网站建设报价wordpress主题分享博客
  • 商城网站设计公司有哪些做橡胶应该看什么网站
  • 网页设计基础代码网站dw做网站注册页代码
  • 网站开发结论福田网站建设公司哪家性价比高
  • 南阳哪里做网站容桂网站制作咨询