-
在給定時間與當前時間進行對比,用途: 驗證碼是否過期?
-
獲取當前時間
NSDate
#pragma mark -得到當前時間date
- (NSDate *)getCurrentTime{
//2017-04-24 08:57:29
NSDateFormatter *formatter=[[NSDateFormatter alloc]init];
[formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
NSString *dateTime=[formatter stringFromDate:[NSDate date]];
NSDate *date = [formatter dateFromString:dateTime];
// [formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
// NSString *dateString = [formatter stringFromDate:date];
// NSLog(@"datastring = %@",dateString);
return date;
}
- 將服務器返回的時間字符串轉換為
date
格式
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
//下面以 '2017-04-24 08:57:29'為例代表服務器返回的時間字符串
NSDate *date = [dateFormatter dateFromString:@"2017-04-24 08:57:29"];
- 時間對比:
- 返回
1
- 過期,0
- 相等,-1
- 沒過期
- (int)compareOneDay:(NSDate *)oneDay withAnotherDay:(NSDate *)anotherDay
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
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(@"oneDay : %@, anotherDay : %@", oneDay, anotherDay);
if (result == NSOrderedDescending) {
//在指定時間前面 過了指定時間 過期
NSLog(@"oneDay is in the future");
return 1;
}
else if (result == NSOrderedAscending){
//沒過指定時間 沒過期
//NSLog(@"Date1 is in the past");
return -1;
}
//剛好時間一樣.
//NSLog(@"Both dates are the same");
return 0;
}
常用語驗證碼過期.封裝到公共類最好.
/*=============================NSDate日期類的使用=============================*/
// 獲取當前時間,獲得的時0市區的時間跟北京時間相差8小時
NSDate *currentDate = [NSDate date]; // GMT
NSLog(@"currentDate :%@",currentDate);
//timeIntervalSince1970 到1970-1-1的秒數,也叫時間戳(NSTimeInterval)
NSTimeInterval interval1970 = [currentDate timeIntervalSince1970];
NSLog(@"interval = %lf",interval1970);
// timeIntervalSinceReferenceDate 到2001-1-1 的秒數
NSTimeInterval interval2001 = [currentDate timeIntervalSinceReferenceDate];
NSLog(@"interval2001 = %lf",interval2001);
// timeIntervalSinceNow 距當前時間的秒數
NSTimeInterval intervalNow = [currentDate timeIntervalSinceNow];
NSLog(@"intervalNow = %lf",intervalNow);
NSTimeInterval hour = 60 * 60;
// 一小時后
NSDate *h1 = [currentDate dateByAddingTimeInterval:hour];
NSLog(@"h1 :%@",h1);
// 一小時前
NSDate *h2 = [currentDate dateByAddingTimeInterval:-hour];
NSLog(@"h2 :%@",h2);
// 計算北京時區時間,(使用系統當前的時區:systemTimeZone)
NSTimeInterval inter = [[NSTimeZone systemTimeZone] secondsFromGMT];
NSDate *bjDate = [currentDate dateByAddingTimeInterval:inter];
NSLog(@"bjDate :%@",bjDate);
NSTimeInterval day = 24 * 60 * 60;
// 方式一:
// NSDate *yesterday = [NSDate dateWithTimeIntervalSinceNow:-day];
// 方式二:
// 昨天
NSDate *yesterday = [bjDate dateByAddingTimeInterval:-day];
NSLog(@"yesterday:%@",yesterday);
// 今天
NSDate *today = [bjDate dateByAddingTimeInterval:0];
NSLog(@"today:%@",today);
// 明天
NSDate *tomorrow = [bjDate dateByAddingTimeInterval:day];
NSLog(@"tomorrow:%@",tomorrow);
// isEqualToDate 兩個日期的比較
if ([yesterday isEqualToDate:tomorrow]) {
NSLog(@"兩個日期相同");
} else {
NSLog(@"兩個日期不相同");
}
// compare 兩個日期的比較
NSComparisonResult result = [yesterday compare:tomorrow];
if (result == NSOrderedAscending) {
NSLog(@"日期升序");
} else if(result == NSOrderedSame) {
NSLog(@"兩個日期相同");
} else if(result == NSOrderedDescending) {
NSLog(@"兩個日期降序");
}
//distantFuture 未來的一個時間 4001-01-01 00:00:00
NSDate *future = [NSDate distantFuture];
NSLog(@"future :%@",future);
//distantPast 遠古的一個時間 0001-12-30 00:00:00
NSDate *past = [NSDate distantPast];
NSLog(@"past :%@",past);
// dateWithTimeIntervalSince1970 將時間戳轉為日期類型
NSString *time = @"34567898";
NSDate *timeDate = [NSDate dateWithTimeIntervalSince1970:[time doubleValue]];
NSLog(@"timeDate :%@",timeDate);
NSDate *now = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy年MM月dd日 HH:mm:ss"];
// 2014年10月15日 16:35:42
// stringFromDate 將日期類型格式化,轉為NSString 類型
NSString *current = [formatter stringFromDate:now];
NSLog(@"current:%@",current);
//dateFromString 將時間字符串轉化為日期類型,
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; // 默認使用0時區,所以需要時區的轉換
NSDate *nowDate = [formatter dateFromString:current];
NSLog(@"nowDate :%@",nowDate);
- 獲取時間戳
-(NSString*)getCurrentTimestamp{
NSDate* dat = [NSDate dateWithTimeIntervalSinceNow:0];
NSTimeInterval a=[dat timeIntervalSince1970];
NSString*timeString = [NSString stringWithFormat:@"%0.f", a];//轉為字符型
return timeString;
}