NSDate分类,把系统返回的时间与现在进行比较---秀清

//
//  NSDate+Joe.h
//  WeiBo
//
//  Created by 张秀清 on 15/9/17.
//  Copyright (c) 2015年 张秀清. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface NSDate (Joe)

/**
 *  是否是今天
 */
-(BOOL)isToday;
/**
 *  是否是这个月
 */
-(BOOL)isThisYear;
/**
 *  是否是今年
 */
-(BOOL)isThisMonth;
/**
 *  是否为昨天
 */
- (BOOL)isYesterday;

/**
 *  返回‘YYYY-MM-DD‘的nsdate
 */
- (NSDate *)dateWithYMD;

/**
 *  返回与当前时间的差距
 */
- (NSDateComponents *)deltaWithNow;
@end

//
//  NSDate+Joe.m
//  WeiBo
//
//  Created by 张秀清 on 15/9/17.
//  Copyright (c) 2015年 张秀清. All rights reserved.
//

#import "NSDate+Joe.h"

@implementation NSDate (Joe)

-(BOOL)isToday
{
    NSCalendar *calendar = [NSCalendar currentCalendar];

    int NSCalendarUnit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;

    //获取当前的年月日
    NSDateComponents *nowCps = [calendar components:NSCalendarUnit fromDate:[NSDate date]];

    NSDateComponents *selfCps = [calendar components:NSCalendarUnit fromDate:self];

    return (nowCps.year == selfCps.year) && (nowCps.month == selfCps.month) && (nowCps.day == selfCps.day);
}

-(BOOL)isThisMonth
{
    NSCalendar *calendar = [NSCalendar currentCalendar];

    int NSCalendarUnit = NSCalendarUnitYear | NSCalendarUnitMonth;

    //获取当前的年月日
    NSDateComponents *nowCps = [calendar components:NSCalendarUnit fromDate:[NSDate date]];

    NSDateComponents *selfCps = [calendar components:NSCalendarUnit fromDate:self];

    return (nowCps.year == selfCps.year) && (nowCps.month == selfCps.month);

}

-(BOOL)isThisYear
{
    NSCalendar *calendar = [NSCalendar currentCalendar];

    int NSCalendarUnit = NSCalendarUnitYear;

    //获取当前的年月日
    NSDateComponents *nowCps = [calendar components:NSCalendarUnit fromDate:[NSDate date]];

    NSDateComponents *selfCps = [calendar components:NSCalendarUnit fromDate:self];

    return nowCps.year == selfCps.year;
}

/**
 *  是否为昨天
 */
- (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;
}

/**
 *  返回‘YYYY-MM-DD‘的nsdate
 */
- (NSDate *)dateWithYMD
{
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"yyyy-MM-dd";
    NSString *selfStr = [fmt stringFromDate:self];
    return [fmt dateFromString:selfStr];
}

/**
 *  返回与当前时间的差距
 */
- (NSDateComponents *)deltaWithNow
{
    NSCalendar *calendar = [NSCalendar currentCalendar];
    int unit = NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
    return [calendar components:unit fromDate:self toDate:[NSDate date] options:0];
}
@end
时间: 2024-10-06 20:50:22

NSDate分类,把系统返回的时间与现在进行比较---秀清的相关文章

截获导航控制器系统返回按钮的点击pop及右滑pop事件

前几天看了@栾小布的一篇文章:Custom backBarButtonItem,在跟着做的时候我又顺便扩展了一些,写此文章的目的是为了总结一下自己所写的东西,方便以后翻看容易,同时也是自己入行iOS一年时间,希望写点东西练练手,还有希望可以分享给大家,希望大家一同讨论,提出宝贵意见以及更简单的实现.总体效果如下: 同时受@J_雨的轻松学习之——IOS利用Runtime自定义控制器POP手势动画一文影响,所以我们将用两种方法实现. 实现思路 每一个navigationController都自带有一

iOS开发中如何将后台返回的时间转换为常见字串

在iOS开发中,经常需要从后台数据中获取时间,但是此时后台返回的时间格式经常是一串类似"123456789"的数字,此数字是1970年开始截至到现在的秒数,此时我们需要将其转换为可以用的格式. 模型中我定义了c_time属性,通过重写c_time的get方法中进行格式的转换. - (NSString *)c_time{ // 1.创建时间格式化类 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; // 2.设置时间

Android中通过进程注入技术修改系统返回的Mac地址

致谢 感谢看雪论坛中的这位大神,分享了这个技术:http://bbs.pediy.com/showthread.php?t=186054,从这篇文章中学习到了很多内容,如果没有这篇好文章,我在研究的过程中会遇到很多困难,说不定我就放弃了~~在此感谢他. 前言 之前的几篇文章都是在介绍了OC的相关知识,之前的半个月也都是在搞IOS的相关东西,白天上班做Android工作,晚上回家还有弄IOS,感觉真的很伤了.不过OC的知识也学习了差不多了.不过在这段时间遗留了很多Android方面的问题都没有进行

NSDate详解及获取当前时间等常用操作

NSDate类用于保存时间值,同时提供了一些方法来处理一些基于秒级别时差(Time Interval)运算和日期之间的早晚比较等. 1. 创建或初始化可用以下方法 用于创建NSDate实例的类方法有 + (id)date; 返回当前时间 + (id)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs; 返回以当前时间为基准,然后过了secs秒的时间 + (id)dateWithTimeIntervalSinceReferenceDate:(NSTi

如何诊断rac环境sysdate 返回的时间错误

最近处理了若干rac环境访问sysdate错误的时间返回.而这个问题通常是一个数据库链接是由现在Listener创建的情况下.并且.大部分情况下都是和时区设置相关的.在这篇文章中我们会针对怎样诊断这样的问题进行解释.这篇文章适用于版本号11.2.0.2 及以上版本号. 首先,对问题其中涉及到的知识进行介绍. 1. 从版本号11.2.0.2 開始oracle 集群(GI)開始拥有了自己的时区和一些其它配置.这些配置保存在配置文件<gi_home>/crs/install/s_crsconfig_

如何诊断rac环境下sysdate 返回错误时间问题

最近处理了一些rac环境下访问sysdate返回错误时间的问题,而这种问题往往出现在数据库链接是通过Listener创建的情况下,而且,大部分情况下都是和时区设置相关的.在这篇文章中我们会针对如何诊断这种问题进行解释.这篇文章适用于版本11.2.0.2 及以上版本. 首先,对问题当中涉及到的知识进行介绍. 1. 从版本11.2.0.2 开始oracle 集群(GI)开始拥有了自己的时区和一些其他配置,这些配置保存在配置文件<gi_home>/crs/install/s_crsconfig_&l

【Objective-C】NSDate详解及获取当前时间等常用操作

NSDate类用于保存时间值,同时提供了一些方法来处理一些基于秒级别时差(Time Interval)运算和日期之间的早晚比较等. 1. 创建或初始化可用以下方法 用于创建NSDate实例的类方法有 + (id)date; 返回当前时间 + (id)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs; 返回以当前时间为基准,然后过了secs秒的时间 + (id)dateWithTimeIntervalSinceReferenceDate:(NSTi

每天进步一点点——Linux系统中的时间处理

转载请说明出处:http://blog.csdn.net/cywosp/article/details/25839551 在程序中时间处理往往是一个麻烦的事,Linux系统提供了很多关于时间处理的函数,我们可以用这些函数来完成我们所需要的功能.那么在程序中一般会关心哪些时间问题呢? 真实时间:程序运行的时间,即程序启动到程序消亡所用时间或程序运行到现在所经过的时间 进程时间:一个进程所使用的CPU时间总量,适用于对程序.算法性能的检查或优化 本文只关注真实时间的处理与转换 一.Epoch 无论地

【系统】系统为何又叫system?系统四大分类研究│系统之家

什么叫系统?怎么才能形成系统?系统为何又叫system?系统有什么专业分类研究│系统之家? 系统一词创成于英文system的音译,对应外文内涵加以丰富.系统是指将零散的东西进行有序的整理.编排形成的具有整体性的整体. 在数字信号处理的理论中,人们把能加工.变换数字信号的实体称作系统.由于处理数字信号的系统是在指定的时刻或时序对信号进行加工运算,所以这种系统被看作是离散时间的,也可以用基于时间的语言.表格.公式.波形等四种方法来描述. 从抽象的意义来说,系统和信号都可以看作是序列.但是,系统是加工