美文网首页iOS
iOS毫秒转日期(带年和天的判断)

iOS毫秒转日期(带年和天的判断)

作者: JamesGu0116 | 来源:发表于2015-09-11 11:55 被阅读2297次

    需求

    • 假设现在为2015-09-11 11:49。
    • 当数据时间为2015-09-11 09:49时,显示:09:49。
    • 当数据时间为2015-09-08 09:49时,显示:09-08 09:49。
    • 当数据时间为2014-09-08 09:49时,显示:2014-09-08 09:49。

    代码

    + (NSString *)getShowDateWithTime:(NSString *)time{
        /**
         传入时间转NSDate类型
         */
        NSDate *timeDate = [[NSDate alloc]initWithTimeIntervalSince1970:[time longLongValue]/1000.0];
        
        /**
         初始化并定义Formatter
         
         :returns: NSDate
         */
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm";
        
        /**
         *  使用Formatter格式化时间(传入时间和当前时间)为NSString
         */
        NSString *timeStr = [dateFormatter stringFromDate:timeDate];
        NSString *nowDateStr = [dateFormatter stringFromDate:[NSDate date]];
        
        /**
         *  判断前四位是不是本年,不是本年直接返回完整时间
         */
        if ([[timeStr substringWithRange:NSMakeRange(0, 4)] rangeOfString:[nowDateStr substringWithRange:NSMakeRange(0, 4)]].location == NSNotFound) {
            return timeStr;
        }else{
            /**
             *  判断是不是本天,是本天返回HH:mm,不是返回MM-dd HH:mm
             */
            if ([[timeStr substringWithRange:NSMakeRange(5, 5)] rangeOfString:[nowDateStr substringWithRange:NSMakeRange(5, 5)]].location != NSNotFound) {
                return [timeStr substringWithRange:NSMakeRange(11, 5)];
            }else{
                return [timeStr substringWithRange:NSMakeRange(5, 11)];
            }
        }
    }
    

    相关文章

      网友评论

        本文标题:iOS毫秒转日期(带年和天的判断)

        本文链接:https://www.haomeiwen.com/subject/kxppcttx.html