細說 IOS 時間相關

2021-07-28 15:06:17 字數 4706 閱讀 3601

該部落格為達到細緻入微、靈活應用的目的,全部採用**示例展示,一些常見的功能的實現都包括在內。

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...