該部落格為達到細緻入微、靈活應用的目的,全部採用**示例展示,一些常見的功能的實現都包括在內。
1. 字串轉 date
(1)從後台獲取的較為標準的時間格式的轉換方法
// 時間字串
nsstring *string = @"2017-03-15 12:33:22";
nsdateformatter *fmt = [[nsdateformatter alloc] init];
// 設定日期格式(為了轉換成功)
fmt.dateformat = @"yyyy-mm-dd hh:mm:ss";
// nsstring * -> nsdate *
nsdate *date = [fmt datefromstring:string];
(2)非標準的時間格式的轉換方法
// 時間字串
nsstring *string = @"03月-15號/2023年 12-33:22秒";
// 日期格式化類
nsdateformatter *fmt = [[nsdateformatter alloc] init];
fmt.dateformat = @"mm月-dd號/yyyy年 hh-mm:ss秒";
(3)從後台獲取的歐美標準的時間格式的轉換方法
// 時間字串
nsstring *string = @"wed mar 15 12:33:22 +0800 2017";
nsdateformatter *fmt = [[nsdateformatter alloc] init];
fmt.dateformat = @"eee mmm dd hh:mm:ss z yyyy";
// fmt.dateformat = @"eee mmm dd hh:mm:ss zzzz yyyy";
// 設定語言區域(因為這種時間是歐美常用時間)
fmt.locale = [[nslocale alloc] initwithlocaleidentifier:@"en_us"];
(4)時間戳轉換方法
// 時間戳 : 從2023年1月1號 00:00:00開始走過的毫秒數
// 時間字串 - 時間戳
nsstring *string = @"14545225645645";
nstimeinterval second = string.longlongvalue / 1000.0;
// 時間戳 -> nsdate *
nsdate *date = [nsdate datewithtimeintervalsince1970:second];
2. date 轉字串
nsdate *date = [nsdate date];
nsdateformatter *fmt = [[nsdateformatter alloc] init];
fmt.dateformat = @"yyyy年mm月dd號 hh:mm:ss";
nsstring *string = [fmt stringfromdate:date];
3. 獲取時間點 component
(1)分別獲取
// 時間字串
nsstring *string = @"2017-03-15 12:33:22";
nsdateformatter *fmt = [[nsdateformatter alloc] init];
fmt.dateformat = @"yyyy-mm-dd hh:mm:ss";
nsdate *date = [fmt datefromstring:string];
// 利用nscalendar處理日期
nscalendar *calendar = [nscalendar currentcalendar];
nsinteger month = [calendar component:nscalendarunitmonth fromdate:date];
nsinteger hour = [calendar component:nscalendarunithour fromdate:date];
nsinteger minute = [calendar component:nscalendarunitminute fromdate:date];
(2)nsdatecomponents 獲取
nsstring *string = @"2017-03-15 12:33:22";
nsdateformatter *fmt = [[nsdateformatter alloc] init];
fmt.dateformat = @"yyyy-mm-dd hh:mm:ss";
nsdate *date = [fmt datefromstring:string];
// 利用nscalendar處理日期
nscalendar *calendar = [nscalendar currentcalendar];
nscalendarunit unit = nscalendarunityear | nscalendarunitmonth | nscalendarunitday | nscalendarunithour | nscalendarunitminute | nscalendarunitsecond;
nsdatecomponents *cmps = [calendar components:unit fromdate:date];
4. 獲取時間間隔
(1)timeintervalsinc……方法計算時間間隔
nsstring *createdatstring = @"2017-03-15 12:33:22";
nsdateformatter *fmt = [[nsdateformatter alloc] init];
fmt.dateformat = @"yyyy-mm-dd hh:mm:ss";
nsdate *createdatdate = [fmt datefromstring:createdatstring];
// 手機當前時間
// nsdate *nowdate = [nsdate date];
// 獲得createdatdate和nowdate的時間間隔(間隔多少秒)
// nstimeinterval interval = [nowdate timeintervalsincedate:createdatdate];
nstimeinterval interval = [createdatdate timeintervalsincenow];
(2)nsdatecomponents 計算時間間隔
nsdateformatter *fmt = [[nsdateformatter alloc] init];
fmt.dateformat = @"yyyy-mm-dd hh:mm:ss";
nsstring *createdatstring = @"2017-03-15 12:33:22";
nsdate *createdatdate = [fmt datefromstring:createdatstring];
// 其他時間
nsstring *otherstring = @"2017-03-16 08:56:45";
nsdate *otherdate = [fmt datefromstring:otherstring];
nscalendar *calendar = nil;
// 因為 currentcalendar 方法在 ios 8 以後有時會出錯,考慮到系統版本的不同,用不同方法獲取當前日期
if ([nscalendar respondstoselector:@selector(calendarwithidentifier:)]) else
// 獲得日期之間的間隔
nscalendarunit unit = nscalendarunityear | nscalendarunitmonth | nscalendarunitday | nscalendarunithour | nscalendarunitminute | nscalendarunitsecond;
nsdatecomponents *cmps = [calendar components:unit fromdate:createdatdate todate:otherdate options:0];
5. 其他類(ios 8開始加入)
// 判斷是否是今天
[calendar isdateintoday:[fmt datefromstring:@"2017-03-15 09:09:56"]];
// 判斷是否是昨天
[calendar isdateinyestoday:[fmt datefromstring:@"2017-03-15 09:09:56"]];
// 判斷是否是明天
[calendar isdateintomorrow:[fmt datefromstring:@"2017-03-15 09:09:56"]];
…………還有很多其他的便捷的方法可自行查閱文件
iOS開發 時間格式相關
1 系統時間 區分系統時間與網路時間 注意點是假如我們手動調整了我們裝置的系統時間,下面的就不准了。nsdateformatter fm nsdateformatter alloc init fm setdateformat yyyy mm dd hh mm ss nsstring currentd...
iOS時間相關各種技巧
一 通過自帶的日曆得到年月日 時間 以及星期nscalendar calendar nscalendar alloc initwithcalendaridentifier nsgregoriancalendar nsdate now nsdatecomponents comps nsdatecomp...
iOS 時間相關(18 10 13更)
1 日曆 nscalendar 2 時間格式 3 時間戳 附錄 1 定時器 1 日曆 nscalendar 1 想要獲取 世紀 年 月 日 時 分 秒 星期 等資訊,需要加入對應的列舉。nscalendar calendar nscalendar alloc initwithcalendariden...