溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

iOS自定義日期demo分享

發(fā)布時(shí)間:2020-08-19 16:54:19 來源:腳本之家 閱讀:131 作者:洛洛愛吃肉 欄目:移動(dòng)開發(fā)

有個(gè)項(xiàng)目需求是做個(gè)在日期上選擇的,就是這種:

iOS自定義日期demo分享

網(wǎng)上看了幾個(gè)日期的demo都太厚重了,移植起來太麻煩,然后打算自己寫。

就先寫個(gè)簡(jiǎn)化的demo看看,主要有幾個(gè)關(guān)鍵點(diǎn):

  • 首先要根據(jù)當(dāng)前日期獲取這個(gè)月有幾天
  • 然后判斷這個(gè)月份第一天是周幾
  • 再根據(jù)上面兩個(gè)數(shù)據(jù)在合理的位置顯示數(shù)據(jù)
  • 還要記錄下當(dāng)前的日期方便切換月份
  • 如果調(diào)接口的話其實(shí)根據(jù)后臺(tái)給數(shù)據(jù)比對(duì)下對(duì)應(yīng)的日期展示數(shù)據(jù)即可

其中有一個(gè)容易迷糊的是獲取的星期天是第一天,下標(biāo)是1

所以我們的數(shù)組是這樣的

_weekdays = [NSArray arrayWithObjects: [NSNull null],@"星期日", @"周一", @"周二", @"周三", @"周四", @"周五", @"周六", nil];
好吧,看下寫出來的效果:

iOS自定義日期demo分享

總的來說沒什么難度,就是要熟悉下關(guān)于日期的api.

 //3.獲取這個(gè)月總天數(shù),填充數(shù)據(jù)源
 NSRange range = [calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:self.currentDate];
 NSUInteger numberOfDaysInMonth = range.length;
 NSLog(@"%lu", (unsigned long)numberOfDaysInMonth);
 
 //4.獲取這個(gè)月的第一天為周幾
 NSCalendar *cal = [NSCalendar currentCalendar];
 NSDateComponents *comps = [cal
    components:NSCalendarUnitYear | NSCalendarUnitMonth
    fromDate:self.currentDate];
 lastMonthComps.day = 1;
 NSDate *firstDay = [cal dateFromComponents:comps];
 NSCalendarUnit calendarUnit = NSCalendarUnitWeekday;
 NSDateComponents *firsComponents = [cal components:calendarUnit fromDate:firstDay];
 
 NSLog(@"%@", [_weekdays objectAtIndex:firsComponents.weekday]);


demo完整代碼

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI