美文网首页
iOS时间处理

iOS时间处理

作者: 张三儿 | 来源:发表于2017-03-21 18:53 被阅读105次

    <h1>☆整体思路,利用后台回传的数据进行Data转换,用Data 判断 ⤵️</h1>###

    // 时间格式:@"yyyy-MM-dd"
     NSCalendarUnit unit = NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute;
        
        //7. 比较
        //components: 要比较的组件 天/小时/周
        //fromDate: 开始时间
        //toDate: 截止时间
        NSDateComponents *cmps = [[NSCalendar currentCalendar] components:unit fromDate:nowDate toDate:deadDate options:0];
    
    

    <h3>1.String2Data</h3>###

    格式:2015-11-20 09:33:22

    // 时间字符串
        NSString *string = @"2015-11-20 09:33:22";
        // 日期格式化类
        NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
        // 设置日期格式(为了转换成功)
        fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
        // NSString * -> NSDate *
        NSDate *date = [fmt dateFromString:string];
    
    

    <h3>1.String2Data</h3>###

    格式:11月-20号/2015年 09-10:05秒

    // 时间字符串
        NSString *string = @"11月-20号/2015年 09-10:05秒";
    
        // 日期格式化类
        NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
        fmt.dateFormat = @"MM月-dd号/yyyy年 HH-mm:ss秒";
    
        // NSString * -> NSDate *
        NSDate *date = [fmt dateFromString:string];
    

    格式:Tue May 31 17:46:55 +0800 2011 (这里用到了时区)

    // 时间字符串
        NSString *string = @"Tue May 31 17:46:55 +0800 2011";
    
        // 日期格式化类
        NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
        fmt.dateFormat = @"EEE MMM dd HH:mm:ss Z yyyy";
        // fmt.dateFormat = @"EEE MMM dd HH:mm:ss ZZZZ yyyy";
        // 设置语言区域(因为这种时间是欧美常用时间)
        fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
    
        // NSString * -> NSDate *
        NSDate *date = [fmt dateFromString:string];
    

    格式:1745645645645 (时间戳)

    // 时间字符串 - 时间戳
        NSString *string = @"1745645645645";
        
        NSTimeInterval second = string.longLongValue / 1000.0;
    
        // 时间戳 -> NSDate *
        NSDate *date = [NSDate dateWithTimeIntervalSince1970:second];
    

    <h3>2.Data2String</h3>###

    NSDate *date = [NSDate date];
    
        NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
        fmt.dateFormat = @"yyyy年MM月dd号 HH:mm:ss";
    
        NSString *string = [fmt stringFromDate:date];
    

    <h3>3.获取部分时间</h3>###

    格式:只获取月

    // 时间字符串
        NSString *string = @"2015-11-20 09:10:05";
        
    
        NSString *month = [string substringWithRange:NSMakeRange(5, 2)];
    
        NSLog(@"%@", month);
    

    格式:只获取month,hour,minute

    // 时间字符串
        NSString *string = @"2015-11-20 09:10:05";
    
        // 日期格式化类
        NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
        // 设置日期格式(为了转换成功)
        fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    
        // NSString * -> NSDate *
        NSDate *date = [fmt dateFromString:string];
    
        // 利用NSCalendar处理日期
        NSCalendar *calendar = [NSCalendar currentCalendar];
        NSInteger month = [calendar component:NSCalendarUnitMonth fromDate:date];
        NSInteger hour = [calendar component:NSCalendarUnitHour fromDate:date];
        NSInteger minute = [calendar component:NSCalendarUnitMinute fromDate:date];
        
    
        NSLog(@"%zd %zd %zd", month, hour, minute);
    

    格式:获取所有

    // 时间字符串
        NSString *string = @"2015-11-20 09:10:05";
    
        // 日期格式化类
        NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
        // 设置日期格式(为了转换成功)
        fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    
        // NSString * -> NSDate *
        NSDate *date = [fmt dateFromString:string];
    
        // 利用NSCalendar处理日期
        NSCalendar *calendar = [NSCalendar currentCalendar];
    
        NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
        NSDateComponents *cmps = [calendar components:unit  fromDate:date];
    
        //    NSLog(@"%zd %zd %zd", cmps.year, cmps.month, cmps.day);
        NSLog(@"%@", cmps);
    

    <h3>4.比较时间</h3>###

    格式:简单比较那个大那个小

    // 时间字符串
        NSString *createdAtString = @"2015-11-20 11:10:05";
        NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
        fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
        NSDate *createdAtDate = [fmt dateFromString:createdAtString];
    
        // 手机当前时间
        NSDate *nowDate = [NSDate date];
    
        /**
         NSComparisonResult的取值
         NSOrderedAscending = -1L, // 升序, 越往右边越大
         NSOrderedSame,  // 相等
         NSOrderedDescending // 降序, 越往右边越小
         */
        // 获得比较结果(谁大谁小)
        NSComparisonResult result = [nowDate compare:createdAtDate];
        if (result == NSOrderedAscending) { // 升序, 越往右边越大
            NSLog(@"createdAtDate > nowDate");
        } else if (result == NSOrderedDescending) { // 降序, 越往右边越小
            NSLog(@"createdAtDate < nowDate");
        } else {
            NSLog(@"createdAtDate == nowDate");
        }
    

    格式:从2015-11-20 09:10:05 到现在走了多少秒

    // 时间字符串
        NSString *createdAtString = @"2015-11-20 09:10:05";
        NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
        fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
        NSDate *createdAtDate = [fmt dateFromString:createdAtString];
    
        // 手机当前时间
        //    NSDate *nowDate = [NSDate date];
    
        // 获得createdAtDate和nowDate的时间间隔(间隔多少秒)
        //    NSTimeInterval interval = [nowDate timeIntervalSinceDate:createdAtDate];
        NSTimeInterval interval = [createdAtDate timeIntervalSinceNow];
        
        NSLog(@"%f", interval);
    

    格式:两时间作比较

    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
        fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    
        // 时间字符串
        NSString *createdAtString = @"2015-11-01 09:10:05";
        NSDate *createdAtDate = [fmt dateFromString:createdAtString];
    
        // 其他时间
        NSString *otherString = @"2015-10-31 08:56:45";
        NSDate *otherDate = [fmt dateFromString:otherString];
    
        // 获得NSCalendar
        NSCalendar *calendar = nil;
        
        if ([NSCalendar respondsToSelector:@selector(calendarWithIdentifier:)]) {
            calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];
        } else {
            calendar = [NSCalendar currentCalendar];
        }
    
        // 获得日期之间的间隔
        NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
        NSDateComponents *cmps = [calendar components:unit fromDate:createdAtDate toDate:otherDate options:0];
        
        NSLog(@"%@", cmps.day)
        
        NSLog(@"%@", cmps);
    

    格式:判断是不是今天时间

    // 获得NSCalendar
        NSCalendar *calendar = nil;
        if ([NSCalendar respondsToSelector:@selector(calendarWithIdentifier:)]) {
            calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];
        } else {
            calendar = [NSCalendar currentCalendar];
        }
        
        NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
        fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
        
        NSLog(@"%zd", [calendar isDateInToday:[fmt dateFromString:@"2015-11-10 01:09:56"]]);
    

    相关文章

      网友评论

          本文标题:iOS时间处理

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