開發(fā)過程中,我們開會經(jīng)常用用到獲取當前時間、明天的常用的方法。下面是我總接的獲取時間相關(guān)的常用的方法,當然了為了方便大家使用,我寫成了類方法(+方法),希望對大家有所幫助。
/**
?獲取當?shù)禺斍皶r間
@return?時間字符串
?*/
+ (NSString?*)getCurrentTime {
?NSDateFormatter?*formatter = [[NSDateFormatter?alloc]?init];
?// yyyy-MM-dd 可自定義,也可以換成 yyyy-MM-dd HH:MM:SS
[formatter?setDateFormat:@"yyyy-MM-dd"];
?NSString?*dateTime = [formatter?stringFromDate:[NSDate?date]];
?return?dateTime;
}
/**
?將字符串轉(zhuǎn)成NSDate類型
@param?dateString 時間類型的字符串 例如:2018-07-12
@return?date
?*/
+ (NSDate?*)dateFromString:(NSString?*)dateString {
?NSDateFormatter?*inputFormatter= [[NSDateFormatter?alloc]?init];
[inputFormatter?setLocale:[[NSLocale?alloc]?initWithLocaleIdentifier:@"en_US"]];
[inputFormatter?setDateFormat:@"yyyy-MM-dd"];
?NSDate?*inputDate = [inputFormatter?dateFromString:dateString];
?//inputDate或出現(xiàn)相差八小時問題,下面是解決相差八小時
?NSTimeZone?*zone = [NSTimeZone?systemTimeZone];
?NSInteger?interval = [zone?secondsFromGMTForDate: inputDate];
?NSDate?*localeDate = [inputDate?dateByAddingTimeInterval: interval];
?return?localeDate;
}
/**
?傳入今天的時間,返回明天的時間
@param?aDate 當前的時間NSDate類型,上面的方法可獲取當前時間的NSDate類型
@return?明天時間
?*/
+ (NSString?*)getTomorrowDay:(NSDate?*)aDate {
?NSCalendar?*gregorian = [[NSCalendar?alloc]?initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
?NSDateComponents?*components = [gregorian?components:NSCalendarUnitWeekday?|NSCalendarUnitYear?|?NSCalendarUnitMonth?|?NSCalendarUnitDay?fromDate:aDate];
[components?setDay:([components?day]+1)];
?NSDate?*beginningOfWeek = [gregorian?dateFromComponents:components];
?NSDateFormatter?*dateday = [[NSDateFormatter?alloc]?init];
[dateday?setDateFormat:@"yyyy-MM-dd"];
?return?[dateday?stringFromDate:beginningOfWeek];
}
/**
?判斷是否為今天
@param?todayTime 時間(NSDate)
@return?YES,是 NO ~
?*/
+ (BOOL)isTodayWithTime:(NSDate*)todayTime{
?NSCalendar?*cal = [NSCalendar?currentCalendar];
?NSDateComponents?*components = [cal?components:(NSCalendarUnitEra|NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay)?fromDate:[NSDate?date]];
?NSDate?*today = [cal?dateFromComponents:components];
components = [cal?components:(NSCalendarUnitEra|NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay)?fromDate:todayTime];
?NSDate?*otherDate = [cal?dateFromComponents:components];
?if([today?isEqualToDate:otherDate]){
?return?YES;
? ? }
?return?NO;
}
/**
?獲取當前時間戳
?*1000 是精確到毫秒,不乘就是精確到秒
@return?返回時間戳
?*/
+ (NSString?*)currentTimeStr{
?NSDate* date = [NSDate?dateWithTimeIntervalSinceNow:0];//獲取當前時間0秒后的時間
?NSTimeInterval?time=[date?timeIntervalSince1970]*1000;// *1000 是精確到毫秒,不乘就是精確到秒
?NSString?*timeString = [NSString?stringWithFormat:@"%.0f", time];
?return?timeString;
}
/**
?時間戳轉(zhuǎn)時間,時間戳為13位是精確到毫秒的,10位精確到秒
?傳入的時間戳str如果是精確到毫秒的記得要/1000
@param?timeStr 時間戳
@return?返回時間
?*/
+ (NSString?*)getDateStringWithTimeStr:(NSString?*)timeStr{
?NSTimeInterval?time=[timeStr?doubleValue]/1000;//傳入的時間戳str如果是精確到毫秒的記得要/1000
?NSDate?*detailDate=[NSDate?dateWithTimeIntervalSince1970:time];
?NSDateFormatter?*dateFormatter = [[NSDateFormatter?alloc]?init];?//實例化一個NSDateFormatter對象
?//設(shè)定時間格式,這里可以設(shè)置成自己需要的格式
[dateFormatter?setDateFormat:@"yyyy-MM-dd HH:mm:ss SS"];
?NSString?*currentDateStr = [dateFormatter?stringFromDate: detailDate];
?return?currentDateStr;
}
/**
?字符串轉(zhuǎn)時間戳 如:2017-4-10 17:15:10
@param?time 時間
@return?時間戳
?*/
+ (NSString?*)getTimeStrWithString:(NSString?*)time{
?NSDateFormatter?*dateFormatter = [[NSDateFormatter?alloc]?init];// 創(chuàng)建一個時間格式化對象
[dateFormatter?setDateFormat:@"YYYY-MM-dd HH:mm:ss"];?//設(shè)定時間的格式
?NSDate?*tempDate = [dateFormatter?dateFromString:time];//將字符串轉(zhuǎn)換為時間對象
?NSString?*timeStr = [NSString?stringWithFormat:@"%ld", (long)[tempDate?timeIntervalSince1970]*1000];//字符串轉(zhuǎn)成時間戳,精確到毫秒*1000
?return?timeStr;
}
/**
?獲取當前是星期幾
@return?1、2、3、4、5、6、7(星期六是 7 ,星期日 1)
?*/
+ (NSInteger)getNowWeekday{
?NSCalendar?*calendar = [[NSCalendar?alloc]?initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
?NSDateComponents?*comps = [[NSDateComponents?alloc]?init];
?NSInteger?unitFlags =?NSCalendarUnitYear?|?NSCalendarUnitMonth?|?NSCalendarUnitDay?|?NSCalendarUnitWeekday?|
?NSCalendarUnitHour?|?NSCalendarUnitMinute?|?NSCalendarUnitSecond;
?NSDate?*now = [NSDate?date];
?// 在真機上需要設(shè)置區(qū)域,才能正確獲取本地日期,中國區(qū)代碼:zh_CN
? ? calendar.locale?= [[NSLocale?alloc]?initWithLocaleIdentifier:@"zh_CN"];
comps = [calendar?components:unitFlags?fromDate:now];
?return?[comps?weekday];
}
/**
?獲取當前是幾月幾日
@return?07月07日
?*/
+ (NSString?*)getTodayStr{
?NSCalendar?*cal = [NSCalendar?currentCalendar];
?NSDateComponents?*components = [cal?components:(NSCalendarUnitEra|NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay)?fromDate:[NSDate?date]];
?NSDate?*today = [cal?dateFromComponents:components];
?NSDateFormatter?*formatter = [[NSDateFormatter?alloc]?init];
formatter.dateFormat?=?@"MM月dd日";
?return?[formatter?stringFromDate:today];
}
/**
?計算兩個時間的差值
@param?starTime 開始時間
@param?endTime 結(jié)束時間
@return?時間差 (單位 :秒)
?*/
+ (NSTimeInterval)pleaseInsertStarTime:(NSString?*)starTime andInsertEndTime:(NSString?*)endTime{
?NSDateFormatter* formater = [[NSDateFormatter?alloc]?init];
[formater?setDateFormat:@"yyyy-MM-dd"];//根據(jù)自己的需求定義格式
?NSDate* startDate = [formater?dateFromString:starTime];
?NSDate* endDate = [formater?dateFromString:endTime];
?NSTimeInterval?time = [endDate?timeIntervalSinceDate:startDate];
?return?time;
}
一共大約是十個時間相關(guān)的方法,每一個方法都有詳細的注釋,希望對大家有所幫助