1.生日正則表達式
#pragma 正則匹配生日
+ (BOOL)checkBirthNumber:(NSString *) birthNumber
{
NSString *pattern = @"((19[\\d]{2})|(20[0-1][\\d]))((0[1-9])|(1[0-2]))((0[1-9])|([1-2]\\d)|(3[0-1]))";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
BOOL isMatch = [pred evaluateWithObject:birthNumber];
return isMatch;
}
2.獲取當(dāng)前日期
NSDate *date = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setDateFormat:@"YYYY-MM-dd hh:mm:ss"];
NSString *DateTime = [formatter stringFromDate:date];
NSLog(@"%@============年-月-日? 時:分:秒=====================",DateTime);
3.獲取當(dāng)前的時間戳
NSTimeInterval time = [[NSDate date] timeIntervalSince1970];
long long int date = (long long int)time;
NSString *timeSp = [NSString stringWithFormat:@"%lld",date];
4.根據(jù)當(dāng)前日期計算前n個月或后n個月的日期
NSDate *date = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM"];
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setMonth:1]; ?(下個月)
// [comps setMonth:-1];(上個月)
NSCalendar *calender = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *mDate = [calender dateByAddingComponents:comps toDate:date options:0];
NSString *dateTime = [formatter stringFromDate:mDate];
NSLog(@"locationStr:%@",_dateTime);
5. 根據(jù)日期判斷是星期幾
@第一種寫法:
NSDateComponents *_comps = [[NSDateComponents alloc] init];
[_comps setDay:23];
[_comps setMonth:3];
[_comps setYear:2014];
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *_date = [gregorian dateFromComponents:_comps];
NSDateComponents *weekdayComponents =
[gregorian components:NSWeekdayCalendarUnit fromDate:_date];
int _weekday = [weekdayComponents weekday];
NSLog(@"_weekday::%d",_weekday);
@第二種寫法:
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comps = [[NSDateComponents alloc] init];
NSInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit |
NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDate *now = [NSDate date];
// 話說在真機上需要設(shè)置區(qū)域,才能正確獲取本地日期,天朝代碼:zh_CN
calendar.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
comps = [calendar components:unitFlags fromDate:now];
6.計算2個日期相差天數(shù)
/**
*? 計算2個日期相差天數(shù)
*? startDate? 起始日期
*? endDate? ? 截至日期
*/
-(NSInteger)daysFromDate:(NSDate *)startDate toDate:(NSDate *)endDate {
NSDateFormatter *dateFormatter=[[NSDateFormatter alloc] init];
// 話說在真機上需要設(shè)置區(qū)域,才能正確獲取本地日期,天朝代碼:zh_CN
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
//得到相差秒數(shù)
NSTimeInterval time = [endDate timeIntervalSinceDate:startDate];
int days = ((int)time)/(3600*24);
int hours = ((int)time)%(3600*24)/3600;
int minute = ((int)time)%(3600*24)/3600/60;
if (days <= 0 && hours <= 0&&minute<= 0) {
NSLog(@"0天0小時0分鐘");
return 0;
}
else {
NSLog(@"%@",[[NSString alloc] initWithFormat:@"%i天%i小時%i分鐘",days,hours,minute]);
// 之所以要 + 1,是因為 此處的days 計算的結(jié)果 不包含當(dāng)天 和 最后一天\
(如星期一 和 星期四,計算機 算的結(jié)果就是2天(星期二和星期三),日常算,星期一——星期四相差3天,所以需要+1)\
對于時分 沒有進行計算 可以忽略不計
return days + 1;
}
}
7.計算當(dāng)前日期與指定日期做對比
第一步:先獲取系統(tǒng)當(dāng)前日期,即本節(jié)簡書當(dāng)中的第2個知識點
第二步:先查看指定日期的格式,如是:2018-01-01,即可直接比較,如是:2018-01-01-00,需轉(zhuǎn)換為相同的日期格式,返回NSDate形式
NSDateFormatter?*dateFormatter?=?[[NSDateFormatter?alloc]?init];??
[dateFormatter?setDateFormat:@"dd-MM-yyyy-HHmmss"];??
NSDate?*date?=?[dateFormatter?dateFromString:@"30-09-2016-000000"];??
第三步:進行比較,如果沒達到指定日期,返回-1,剛好是這一時間,返回0,否則返回1
-?(int)compareOneDay:(NSDate?*)oneDay?withAnotherDay:(NSDate?*)anotherDay??
{??
NSDateFormatter?*dateFormatter?=?[[NSDateFormatter?alloc]?init];??
[dateFormatter?setDateFormat:@"dd-MM-yyyy-HHmmss"];??
NSString?*oneDayStr?=?[dateFormatter?stringFromDate:oneDay];??
NSString?*anotherDayStr?=?[dateFormatter?stringFromDate:anotherDay];??
NSDate?*dateA?=?[dateFormatter?dateFromString:oneDayStr];??
NSDate?*dateB?=?[dateFormatter?dateFromString:anotherDayStr];??
NSComparisonResult?result?=?[dateA?compare:dateB];??
NSLog(@"date1?:?%@,?date2?:?%@",?oneDay,?anotherDay);??
if?(result?==?NSOrderedDescending)?{??
NSLog(@"Date1??is?in?the?future");??
return?1;??
????}??
else?if?(result ==?NSOrderedAscending){??
NSLog(@"沒有達到指定日期");??
return?-1;??
????} ?
NSLog(@"兩時間相同");??
return?0;??
}??
第四步:比較調(diào)用第三步函數(shù)
[self?compareOneDay:[self?getCurrentTime]?withAnotherDay:date]??