zoukankan      html  css  js  c++  java
  • 计算时间

    NSDate+MJ.h

    #import <Foundation/Foundation.h>
    
    @interface NSDate (MJ)
    /**
     *  是否为今天
     */
    - (BOOL)isToday;
    /**
     *  是否为昨天
     */
    - (BOOL)isYesterday;
    /**
     *  是否为今年
     */
    - (BOOL)isThisYear;
    
    /**
     *  返回一个只有年月日的时间
     */
    - (NSDate *)dateWithYMD;
    
    /**
     *  获得与当前时间的差距
     */
    - (NSDateComponents *)deltaWithNow;
    @end

    NSDate+MJ.m

    //
    //  NSDate+MJ.m
    //  ItcastWeibo
    //
    //  Created by apple on 14-5-9.
    //  Copyright (c) 2014年 itcast. All rights reserved.
    //
    
    #import "NSDate+MJ.h"
    
    @implementation NSDate (MJ)
    /**
     *  是否为今天
     */
    - (BOOL)isToday
    {
        NSCalendar *calendar = [NSCalendar currentCalendar];
        int unit = NSCalendarUnitDay | NSCalendarUnitMonth |  NSCalendarUnitYear;
        
        // 1.获得当前时间的年月日
        NSDateComponents *nowCmps = [calendar components:unit fromDate:[NSDate date]];
        
        // 2.获得self的年月日
        NSDateComponents *selfCmps = [calendar components:unit fromDate:self];
        return
        (selfCmps.year == nowCmps.year) &&
        (selfCmps.month == nowCmps.month) &&
        (selfCmps.day == nowCmps.day);
    }
    
    /**
     *  是否为昨天
     */
    - (BOOL)isYesterday
    {
        // 2014-05-01
        NSDate *nowDate = [[NSDate date] dateWithYMD];
        
        // 2014-04-30
        NSDate *selfDate = [self dateWithYMD];
        
        // 获得nowDate和selfDate的差距
        NSCalendar *calendar = [NSCalendar currentCalendar];
        NSDateComponents *cmps = [calendar components:NSCalendarUnitDay fromDate:selfDate toDate:nowDate options:0];
        return cmps.day == 1;
    }
    
    - (NSDate *)dateWithYMD
    {
        NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
        fmt.dateFormat = @"yyyy-MM-dd";
        NSString *selfStr = [fmt stringFromDate:self];
        return [fmt dateFromString:selfStr];
    }
    
    /**
     *  是否为今年
     */
    - (BOOL)isThisYear
    {
        NSCalendar *calendar = [NSCalendar currentCalendar];
        int unit = NSCalendarUnitYear;
        
        // 1.获得当前时间的年月日
        NSDateComponents *nowCmps = [calendar components:unit fromDate:[NSDate date]];
        
        // 2.获得self的年月日
        NSDateComponents *selfCmps = [calendar components:unit fromDate:self];
        
        return nowCmps.year == selfCmps.year;
    }
    
    - (NSDateComponents *)deltaWithNow
    {
        NSCalendar *calendar = [NSCalendar currentCalendar];
        int unit = NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
        return [calendar components:unit fromDate:self toDate:[NSDate date] options:0];
    }
    @end
    // 创建格式化类
        NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
        // 设置格式      _created_at = @"Mon Jul 14 16:13:07 +0800 2014";
        fmt.dateFormat = @"EEE MMM dd HH:mm:ss Z yyyy";
        
    #warning 真机调试(真机显示时间,要写上这句话)
        fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
        // 获得发微博的具体时间
        NSDate *createDate = [fmt dateFromString:_created_at];
        
        // 判断是否为今年
        if (!createDate.isThisYear) {
            fmt.dateFormat = @"yyyy-MM-dd";
            return [fmt stringFromDate:createDate];
        }
        
        if (!createDate.isToday && !createDate.isYesterday) { // 不是今天,也不是昨天
                fmt.dateFormat = @"MM-dd HH:mm";
                return [fmt stringFromDate:createDate];
        }
        if (!createDate.isToday) {
            fmt.dateFormat = @"昨天 HH:mm";
            return [fmt stringFromDate:createDate];
        }
        NSDateComponents *cmps = [createDate deltaWithNow];
        
        if (!cmps.hour >= 1 && !cmps.minute >= 1) {
             return @"刚刚";
        }
        
        if (!cmps.hour >= 1) {
            return [NSString stringWithFormat:@"%d分钟前", cmps.minute];
        }
        
        return  [NSString stringWithFormat:@"%d小时前", cmps.hour];
  • 相关阅读:
    CFileDialog打开多个文件失败 返回错误 FNERR_BUFFERTOOSMALL
    VC 控件集合
    [摘]思科认证三步走及找工作的七大职业走向
    windows无法配置此无线连接解决办法
    VS 2019 项目添加引用,提示:对COM组件的调用返回了错误HRESULT E_FAIL
    c# winform 获取当前程序运行根目录
    DataGridView 转换成 DataTable
    SQL Server日志文件过大 大日志文件清理方法 不分离数据库
    行动吧!让自己骚起来
    抖音很火的3D旋转相册 (源代码分享)
  • 原文地址:https://www.cnblogs.com/Fc-ios/p/3920215.html
Copyright © 2011-2022 走看看