BCD7A3A49CAC5F36F8789CE4457D0D29.png
最近項目需要,做一個錢包,里面有個類似支付寶賬單的東西,界面的話就是自定義tableViewcell,數據的話,頭像,金錢,名字呀,都是后臺傳的,基本不用做任何操作,直接拿來用,但是時間就不一樣了,后臺傳的是時間戳,但是顯示的話,昨天和今天的時間周期內,上面顯示昨天或者今天的字樣,下面是時間,超過這個時間范圍顯示星期和日期,這個就需要前端判斷轉為自己需要的東西了,話不多,直接上代碼!!!
時間戳轉時間
//后臺傳過來的時間戳
NSString* jiezhiTimeString1 = [NSString stringWithFormat:@"%@",dict[@"due_time"]];
//將后臺傳給的時間戳轉為時間
NSInteger num = [jiezhiTimeString1 integerValue]/1000;
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];//MM-dd
NSDate *confromTimesp = [NSDate dateWithTimeIntervalSince1970:num];
NSString *shijian = [formatter stringFromDate:confromTimesp];```
####時間戳轉星期(時間戳是當前時間)
//獲得當前時間的時間戳
NSDate* dat = [NSDate dateWithTimeIntervalSinceNow:0];
NSTimeInterval a=[dat timeIntervalSince1970];
NSString*timeString = [NSString stringWithFormat:@"%0.f", a];//轉為字符型
NSArray *weekday = [NSArray arrayWithObjects: [NSNull null], @"周日", @"周一", @"周二", @"周三", @"周四", @"周五", @"周六", nil];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [calendar components:NSWeekdayCalendarUnit fromDate:dat];
NSString *weekStr = [weekday objectAtIndex:components.weekday];```
時間轉時間戳
NSTimeInterval a=[date timeIntervalSince1970]*1000; // *1000 是精確到毫秒,不乘就是精確到秒
NSString *timeString = [NSString stringWithFormat:@"%.0f", a]; //轉為字符型 ```
####想實現類似支付寶的這個,就是獲得現在的時間戳轉為只有日分,后臺傳過來的也轉為日分,兩個相減,0或者1的話顯示今天或者昨天,其他的話就顯示周幾!
####完整代碼如下(代碼里面的是model數據)
//后臺傳過來的時間戳
NSString* jiezhiTimeString1 = [NSString stringWithFormat:@"%@",dict[@"due_time"]];
//將后臺傳給的時間戳轉為時間
NSInteger num = [jiezhiTimeString1 integerValue]/1000;
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];//MM-dd
NSDate *confromTimesp = [NSDate dateWithTimeIntervalSince1970:num];
NSString *shijian = [formatter stringFromDate:confromTimesp];
//--------------------
//將后臺傳給的時間戳轉為日期
NSInteger num1 = [jiezhiTimeString1 integerValue]/1000;
NSDateFormatter *formatter1 = [[NSDateFormatter alloc]init];
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setDateFormat:@"MM-dd"];//MM-dd
NSDate *confromTimesp1 = [NSDate dateWithTimeIntervalSince1970:num1];
NSString *riqi = [formatter stringFromDate:confromTimesp1];
// 將后臺傳給的時間戳轉為星期
NSArray *weekday = [NSArray arrayWithObjects: [NSNull null], @"周日", @"周一", @"周二", @"周三", @"周四", @"周五", @"周六", nil];
NSInteger num2 = [jiezhiTimeString1 integerValue]/1000;
NSDate *newDate = [NSDate dateWithTimeIntervalSince1970:num2];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [calendar components:NSWeekdayCalendarUnit fromDate:newDate];
NSString *weekStr = [weekday objectAtIndex:components.weekday];
//--------------
//獲得當前時間的時間戳
NSDate* dat = [NSDate dateWithTimeIntervalSinceNow:0];
NSTimeInterval a=[dat timeIntervalSince1970];
NSString*timeString = [NSString stringWithFormat:@"%0.f", a];//轉為字符型
//兩個時間戳的差轉為日
NSInteger time1 = [jiezhiTimeString1 integerValue];
NSInteger time2 = [timeString integerValue];
NSInteger response = time2 - time1;
NSTimeInterval theResponse = response;
NSDate * responseTimeInterval = [NSDate dateWithTimeIntervalSince1970:theResponse];
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd"];//yyyy-MM-dd HH:mm:ss
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:8]];
NSString * responseTime = [dateFormatter stringFromDate:responseTimeInterval];
if ([responseTime isEqualToString:@"0"]) {
_dayStr = @"今天";
_time = shijian;
}else if ([responseTime isEqualToString:@"1"]){
_dayStr = @"昨天";
_time = shijian;
}else{
_dayStr = riqi;
_time = weekStr ;
}```