根据年月日时间换算到精确时分秒和周几

闲来无事看到微信列表右侧有显示时间,可以清晰的看出来具体什么时间收到的消息

现在我根据后台返回的时间年月日时分秒来转换时间demo地址:https://github.com/tuwanli/ShowTimeDemo

demo:http://download.csdn.net/detail/tuwanli125/9470326

后台请求的数据:


该建表的建表,该创建cell的创建cell,然后就是将数据显示在表里

主要转换的代码如下

+ (NSString*)weekDayStr:(NSDate *)format
{
    NSString *weekDayStr = nil;
    
    NSDateComponents *comps = [[NSDateComponents alloc] init];
    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    NSInteger unitFlags =NSCalendarUnitYear | NSCalendarUnitMonth |NSCalendarUnitDay | NSCalendarUnitWeekday |
    NSCalendarUnitHour |NSCalendarUnitMinute | NSCalendarUnitSecond;
    comps = [calendar components:unitFlags fromDate:format];
    
    NSString *str = [self description];
    if (str.length >= 10) {
        NSString *nowString = [str substringToIndex:10];
        NSArray *array = [nowString componentsSeparatedByString:@"-"];
        if (array.count == 0) {
            array = [nowString componentsSeparatedByString:@"/"];
        }
        if (array.count >= 3) {
            NSInteger year = [[array objectAtIndex:0] integerValue];
            NSInteger month = [[array objectAtIndex:1] integerValue];
            NSInteger day = [[array objectAtIndex:2] integerValue];
            [comps setYear:year];
            [comps setMonth:month];
            [comps setDay:day];
        }
    }
    
    NSCalendar *gregorian = [[NSCalendar alloc]
                             initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    NSDate *_date = [gregorian dateFromComponents:comps];
    NSDateComponents *weekdayComponents = [gregorian components:NSCalendarUnitWeekday fromDate:_date];
    NSInteger week = [weekdayComponents weekday];
    week ++;
    switch (week) {
        case 1:
            weekDayStr = @"星期日";
            break;
        case 2:
            weekDayStr = @"星期一";
            break;
        case 3:
            weekDayStr = @"星期二";
            break;
        case 4:
            weekDayStr = @"星期三";
            break;
        case 5:
            weekDayStr = @"星期四";
            break;
        case 6:
            weekDayStr = @"星期五";
            break;
        case 7:
            weekDayStr = @"星期六";
            break;
        default:
            weekDayStr = @"";  
            break;  
    }  
    return weekDayStr;  
}
+ (NSString *)remindlistTime:(NSString *)timeStr
{
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateStyle:NSDateFormatterMediumStyle];
    [formatter setTimeStyle:NSDateFormatterShortStyle];
    [formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
     NSDate* date = [formatter dateFromString:timeStr];
    
    
    
    
    NSTimeInterval secondsPerDay = 24 * 60 * 60;
    NSDate *today = [[NSDate alloc] init];
    NSDate *yesterday,*weekday;
    
    weekday = [today dateByAddingTimeInterval: -(secondsPerDay*7)];
    yesterday = [today dateByAddingTimeInterval: -secondsPerDay];
    
    // 10 first characters of description is the calendar date:
    NSString * todayString = [[today description] substringToIndex:10];
    NSString * yesterdayString = [[yesterday description] substringToIndex:10];
    NSString * dateString = [[date description] substringToIndex:10];
    
    if ([dateString isEqualToString:todayString])
    {
        return @"今天";
    } else if ([dateString isEqualToString:yesterdayString])
    {
        return @"昨天";
    }else if ([weekday timeIntervalSince1970]>[date timeIntervalSince1970]){
        
        NSArray *timeArr = [[[timeStr componentsSeparatedByString:@" "] objectAtIndex:0] componentsSeparatedByString:@"-"];
        NSString *dayTime;
        NSString *monthlyTime;
        if ([[timeArr[2] substringToIndex:1] isEqualToString:@"0"]) {
            dayTime = [timeArr[2] substringFromIndex:1];
        }else{
            dayTime = timeArr[2];
        }
        if ([[timeArr[1] substringToIndex:1] isEqualToString:@"0"]) {
            monthlyTime = [timeArr[1] substringFromIndex:1];
        }else{
            monthlyTime = timeArr[1];
        }
        return [NSString stringWithFormat:@"%@/%@/%@",[(NSString *)timeArr[0] substringFromIndex:2],monthlyTime,dayTime];
    }
    else
    {
        return [Tool weekDayStr:date];
    }
    
}


效果:


如果你发现你看不见我单元格的线,告诉你一个秘密,因为我用的iOS9的模拟器,像素太高,所以看不见,command+1就能看见了,哈哈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值