1. 程式人生 > >iOS判斷一個日期是否為昨日、今日、今年

iOS判斷一個日期是否為昨日、今日、今年

1、需要建立一個NSDate類的category,呼叫的時候需要傳進來一個NSDate型別的時間即可返回BOOL值來判斷改時間是不是今日等。

2、直接上乾貨

建立完分類後,在.h檔案中加入下面的程式碼:

#import <Foundation/Foundation.h>

@interface NSDate (Extension)

/**

 *  是否為今天

 */

- (BOOL)isToday;

/**

 *  是否為昨天

 */

- (BOOL)isYesterday;

/**

 *  是否為今年

 */

- (BOOL)isThisYear;

/**

 *  返回一個只有年月日的時間

 */

- (NSDate *)dateWithYMD;

/**

 *  獲得與當前時間的差距

 */

- (NSDateComponents *)deltaWithNow;

@end

3、切換到.m檔案中,加入下面程式碼:

#import "NSDate+Extension.h"

@implementation NSDate (Extension)

/**

 *  是否為今天

 */

- (BOOL)isToday

{

NSCalendar *calendar = [NSCalendarcurrentCalendar];

int unit = NSCalendarUnitDay | NSCalendarUnitMonth

NSCalendarUnitYear;

// 1.獲得當前時間的年月日

NSDateComponents *nowCmps = [calendar components:unit fromDate:[NSDatedate]];

// 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 = [[NSDatedate] dateWithYMD];

// 2014-04-30

NSDate *selfDate = [selfdateWithYMD];

// 獲得nowDateselfDate的差距

NSCalendar *calendar = [NSCalendarcurrentCalendar];

NSDateComponents *cmps = [calendar components:NSCalendarUnitDayfromDate:selfDate toDate:nowDate options:0];

return cmps.day == 1;

}

/**

 *  是否為今年

 */

- (BOOL)isThisYear

{

NSCalendar *calendar = [NSCalendarcurrentCalendar];

int unit = NSCalendarUnitYear;

// 1.獲得當前時間的年月日

NSDateComponents *nowCmps = [calendar components:unit fromDate:[NSDatedate]];

// 2.獲得self的年月日

NSDateComponents *selfCmps = [calendar components:unit fromDate:self];

return nowCmps.year == selfCmps.year;

}

/**

返回一個只有年月日的時間

*/

- (NSDate *)dateWithYMD

{

NSDateFormatter *fmt = [[NSDateFormatteralloc] init];

    fmt.dateFormat = @"yyyy-MM-dd";

NSString *selfStr = [fmt stringFromDate:self];

return [fmt dateFromString:selfStr];

}

/**

 *  獲得與當前時間的差距

 */

- (NSDateComponents *)deltaWithNow

{

NSCalendar *calendar = [NSCalendarcurrentCalendar];

int unit = NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;

return [calendar components:unit fromDate:selftoDate:[NSDatedate] options:0];

}

@end

4、使用該方法:

    NSDateFormatter *formater = [[NSDateFormatteralloc] init];

    formater.dateFormat = @"yyyy-MM-dd HH:mm:ss";

NSDate *sendDate  = [formater dateFromString:@"你想判斷的時間"];

    sendDate.isToday  //判斷是否為今日

    sendDate.isThisYear //判斷是否為昨日

    sendDate.isYesterday  //判斷是否為今年

    還有一個是獲取與當前時間差距的方法deltaWithNow

    基本上就是這樣搞的


相關推薦

iOS判斷一個日期是否昨日今日今年

1、需要建立一個NSDate類的category,呼叫的時候需要傳進來一個NSDate型別的時間即可返回BOOL值來判斷改時間是不是今日等。 2、直接上乾貨 建立完分類後,在.h檔案中加入下面的程式碼

判斷一個日期周幾?

public static void getWeek() throws Exception{         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");               Calend

判斷一個請求是否Ajax請求

iteye blank href 請求 logs 分享 判斷 let https 這幾天在寫一個網站的登錄判斷攔截器,需要對請求進行攔截,在攔截器中我需要判斷HttpServletRequest是否為Ajax異步請求。我們可以通過X-Requested-With="XMLH

python判斷一個單詞是否有效的英文單詞?——三種方法

eas www. cal ges art etc code port href For (much) more power and flexibility, use a dedicated spellchecking library like PyEnchant. Ther

從javascript判斷一個物件是否陣列中學習js語法

1,真正的陣列的判斷方法 javascript中最簡單的宣告陣列方法為: var a = []; 判斷是否為陣列的最直接的方法為: a instanceof Array //true a .constructor == Array //true 這裡涉及到一個i

C#判斷一個string是否數字(正則表示式)

方案一:Try...Catch(執行效率不高) private bool IsNumberic(string oText) {           try     &nb

用vs實現判斷一個整數是否素數

             用vs實現判斷一個整數是否為素數,如果不是輸出它的因子    我們知道在數學應用中素數佔有極為重要的作用,所以如何判斷一個數是否為素數顯得極為重要。  判斷素數方向:

如何判斷一個物件是否jquery物件

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

編寫一個函式判斷一個整數是否迴文數。如果一個屬從正的方向讀和從反的方向讀的結果相同,則該數就是迴文數。

bool palindrome(int b){   int k = 0;   char a[1000];   do {     int c;     c = b % 10;     char d;     for (int i = 0; i <= 9; i++) {       if (c == i

1.實現一個函式,可以左旋字串中的k個字元。 2.判斷一個字串是否另外一個字串旋轉之後的字串。

1.實現一個函式,可以左旋字串中的k個字元 ABCD左旋一個字元得到BCDA ABCD左旋兩個字元得到CDAB #include<stdio.h> #include<string.h> void left_move(char*str, int

js 判斷一個物件是否空方法總結

通常情況下,工作中寫邏輯的時候都會用到判斷一個物件是否為空的方法,巧的是今天正好有人問我這個問題,我竟然沒回答上來,很尷尬,決定研究一下總結下來,之前研究過但是久了不用就生疏了!大意啊 1.將json物件轉化為json字串,再判斷該字串是否為"{}" var data = {};

紅黑樹旋轉的通俗易懂版本以及判斷一個樹是否紅黑樹

紅黑樹屬於二叉搜尋樹,但是每個節點增加了一個存顏色的位,它的規則是: 1.根節點為黑色。 2.不能有連續的兩個紅節點,所以如果一個節點的顏色為紅,那麼它的子節點若不為空則一定為紅。 3.每條路徑上黑節點

判斷一個字串是否另外一個字串旋轉之後的字串

例如:給定s1 = AABCD和s2 = BCDAA,返回1,給定s1 = abcd和s2 = ACBD,返回0. AABCD左旋一個字元得到ABCDA AABCD左旋兩個字元得到BCDAA AABCD右旋一個字元得到DAABC int is_left_mov

JavaScript判斷一個物件是否

寫一個函式 isEmptyObject,判斷一個物件是不是空物件 function isEmptyObject(obj){ for(var item in obj){ ret

判斷一個字串是否另外一個字串旋轉之後的字串。 例如:給定s1 =AABCD和s2 = BCDAA,返回1,給定s1=abcd和s2=ACBD,返回0.

判斷一個字串是否為另外一個字串旋轉之後的字串。  例如:給定s1 =AABCD和s2 = BCDAA,返回1,給定s1=abcd和s2=ACBD,返回0.  AABCD左旋一個字元得到ABCDA  AA

程式設計:判斷一個字串是否一個字串的子串。

#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char *str, *ptr; int i, len_str, len_pt

python判斷一個字串是否另一字串的子串的幾種方法

字串型別是Python裡面最常見的型別。在處理字串的時候經常會用到string模組,string模組的方法是在Python1.6裡面新增進來的。本文中主要以string模組的方法來判斷一個字串是否為另一字串的子串。 (一)首先介紹一種最簡單的方法:成員操作 in ss=r

判斷一個字串是否另外一個字串的子串

#include<iostream> #include<string> using namespace std; bool checkchild(string &s, string &t) { int j = 0; for (

[LeetCode] Is Subsequence 判斷一個字串是否一個的子序列

宣告:原題目轉載自LeetCode,解答部分為原創 Problem : Given a string s and a string t, check if s is subsequence of t. You may assume that there is on

判斷一個字串是否另外一個字串旋轉之後的字串。 例如:給定s1 =AABCD和s2 = BCDAA,返回1,給定s1=abcd和s2=ACBD,返回0.

思路: 判斷字串是否是給定字串旋轉後的,可以用左旋或者右旋後的每次與給定字串比較,如果有相等的就可以得出判定字串是給定字串旋轉後的,字串左旋或者右旋的次數都等於字串的長度,利用字串函式strcmpk可以比較2個字串。 #define use _CRT_SECUR