iOS 獲取當前時間、明天時間以及其他相關(guān)的時間

開發(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)的方法,每一個方法都有詳細的注釋,希望對大家有所幫助

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容