日歷用到的nsdate

<pre>
/**

  • 獲取當(dāng)前的年月天起宽;

*/

  • (NSInteger)currentYearMonthDay:(NSDate *)currentDate{
    NSCalendar calder = [NSCalendar currentCalendar];
    NSDateComponents complement = [calder components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay | NSCalendarUnitHour fromDate:currentDate];
    return complement.day;
    }
    /
  • 獲取每一個(gè)月的總天數(shù)
    */
  • (NSInteger)totalDaysOfCurrentMounth:(NSDate *)currentDate{
    NSRange range = [[NSCalendar currentCalendar] rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:currentDate];
    return range.length;

}
/**

*/

  • (NSString *)getMonthBeginAndEndWith:(NSDate *)date{

// NSDateFormatter *format=[[NSDateFormatter alloc] init];
// [format setDateFormat:@"yyyy-MM"];
// NSDate *newDate=[format dateFromString:dateStr];
double interval = 0;
NSDate *beginDate = nil;
NSDate *endDate = nil;
NSCalendar *calendar = [NSCalendar currentCalendar];

[calendar setFirstWeekday:2];//設(shè)定周日為周首
BOOL ok = [calendar rangeOfUnit:NSCalendarUnitMonth startDate:&beginDate interval:&interval forDate:date];
//分別修改為 NSDayCalendarUnit NSWeekCalendarUnit NSYearCalendarUnit
if (ok) {
    endDate = [beginDate dateByAddingTimeInterval:interval-1];
}else {
    return @"";
}
NSDateFormatter *myDateFormatter = [[NSDateFormatter alloc] init];
[myDateFormatter setDateFormat:@"YYYY.MM.dd"];
NSString *beginString = [myDateFormatter stringFromDate:beginDate];
NSString *endString = [myDateFormatter stringFromDate:endDate];
NSString *s = [NSString stringWithFormat:@"%@-%@",beginString,endString];
return s;

}
/**
*獲取當(dāng)前時(shí)間是星期幾
*/

  • (NSInteger)getWeekOfMonthWith:(NSDate )date{
    NSCalendar calendar = [NSCalendar currentCalendar];
    [calendar setFirstWeekday:2];
    return [calendar ordinalityOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitWeekOfMonth forDate:date];
    }
    /
  • 時(shí)間字符串轉(zhuǎn)化為date
    */
  • (NSDate )getDateWithTimeString:(NSString )timeStr{
    NSDateFormatter inputFormatter = [[NSDateFormatter alloc] init];
    [inputFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:NSCalendarIdentifierGregorian] ];
    [inputFormatter setDateFormat:@"yyyyMMdd"];
    NSDate
    inputDate = [inputFormatter dateFromString:timeStr];
    return inputDate;
    }
    /

    每個(gè)月多少天
    */
    +(int)getDaysWithYear:(NSInteger )year andMonth:(NSInteger)month{
    int times [] = {31,28,31,30,31,30,31,31,30,31,30,31};
    if ((year%4==0&&year%100!=0)||year%400==0) {
    times[1] = 29;
    }
    return (times[month-1]);
    }
  • (NSInteger)weeksOfMonthWithDate:(NSDate *)date{
    NSInteger firstDay = [self firstWeekdayInThisMonth:date];
    NSInteger totalDay = [self totalDaysOfCurrentMounth:date];
    NSInteger otherWeeks = (totalDay - (7-firstDay))/7;
    NSInteger otherDay = (totalDay - (7-firstDay))%7 == 0? 0:1 ;
    return 1+otherWeeks +otherDay;

}
/**

  • 第一天是周幾
    */
  • (NSInteger)firstWeekdayInThisMonth:(NSDate *)date{
    NSCalendar *calendar = [NSCalendar currentCalendar];
    [calendar setFirstWeekday:1];//1.Sun. 2.Mon. 3.Thes. 4.Wed. 5.Thur. 6.Fri. 7.Sat.
    NSDateComponents *comp = [calendar components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay) fromDate:date];
    [comp setDay:1];
    NSDate *firstDayOfMonthDate = [calendar dateFromComponents:comp];
    NSUInteger firstWeekday = [calendar ordinalityOfUnit:NSCalendarUnitWeekday inUnit:NSCalendarUnitWeekOfMonth forDate:firstDayOfMonthDate];
    return firstWeekday - 1;
    }
    //獲取某某年某某月的第一天是星期幾

+(int)GetTheWeekOfDayByYera:(int)year
andByMonth:(int)month{
int sum = 0;
for(int i = 1;i<month;i++){
sum+=[self getDaysWithYear:year andMonth:i];
}
int nedDay = sum+1;

return ((year-1)+(year-1)/4 -(year/100)+(year/400)+nedDay)%7;

}
/**

  • 獲取某一個(gè)月的第一天
    /
    +(NSDate
    )startDayOfCurrentMonth:(NSDate *)date{
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *startComplement = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth fromDate:date];
    [startComplement setHour:+8];

    NSDate *startDate = [calendar dateFromComponents:startComplement];
    return startDate;
    }

  • (NSString *)autoFullString:(NSDate *)currentDate{
    NSCalendar *calder = [NSCalendar currentCalendar];
    NSDateComponents *complement = [calder components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay | NSCalendarUnitHour fromDate:currentDate];
    if (complement.month<10) {
    return [NSString stringWithFormat:@"%ld-0%ld",(long)complement.year,(long)complement.month];
    }
    return [NSString stringWithFormat:@"%ld-%ld",(long)complement.year,(long)complement.month];
    }

  • (NSDate *)lastMonth:(NSDate *)date{
    NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
    dateComponents.month = -1;

    NSDate *newDate = [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:date options:0];
    return newDate;
    }

  • (NSDate*)nextMonth:(NSDate *)date{
    NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
    dateComponents.month = +1;
    NSDate *newDate = [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:date options:0];
    return newDate;
    }
    </pre>

[轉(zhuǎn)載一點(diǎn)其他]:http://www.111cn.net/sj/iOS/111617.htm

1洲胖、得到當(dāng)前月第一天、最后一天日期

a坯沪、 本月開始日期
<pre>
func startOfCurrentMonth() -> NSDate {
let date = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components([.Year, .Month], fromDate: date)
let startOfMonth = calendar.dateFromComponents(components)!
return startOfMonth
}
</pre>
b绿映、本月結(jié)束日期
<pre>
func endOfCurrentMonth(returnEndTime:Bool = false) -> NSDate {
let calendar = NSCalendar.currentCalendar()
let components = NSDateComponents()
components.month = 1
if returnEndTime {
components.second = -1
} else {
components.day = -1
}
let endOfMonth = calendar.dateByAddingComponents(components,
toDate: startOfCurrentMonth(),
options: [])!
return endOfMonth
}
</pre>
測試代碼:

創(chuàng)建一個(gè)日期格式器
<pre>
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy年MM月dd日 HH:mm:ss"
</pre>

當(dāng)月第一天日期
<pre>
let startDate = startOfCurrentMonth()
print("本月開始時(shí)間:", dateFormatter.stringFromDate(startDate))
</pre>

當(dāng)月最后一天日期1<pre>
let endDate1 = endOfCurrentMonth()
print("本月結(jié)束時(shí)間1:", dateFormatter.stringFromDate(endDate1))
</pre>
當(dāng)月最后一天日期2<pre>
let endDate2 = endOfCurrentMonth(true)
print("本月結(jié)束時(shí)間2:", dateFormatter.stringFromDate(endDate2))
</pre>

2、得到當(dāng)年第一天腐晾、最后一天日期

a叉弦、本年開始日期
<pre>
func startOfCurrentYear() -> NSDate {
let date = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components([.Year], fromDate: date)
let startOfYear = calendar.dateFromComponents(components)!
return startOfYear
}
</pre>
b、本年結(jié)束日期
<pre>
func endOfCurrentYear(returnEndTime:Bool = false) -> NSDate {
let calendar = NSCalendar.currentCalendar()
let components = NSDateComponents()
components.year = 1
if returnEndTime {
components.second = -1
} else {
components.day = -1
}
let endOfYear = calendar.dateByAddingComponents(components,
toDate: startOfCurrentYear(),
options: [])!
return endOfYear
}
</pre>
測試代碼:

創(chuàng)建一個(gè)日期格式器<pre>
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy年MM月dd日 HH:mm:ss"
</pre>
本年度第一天日期<pre>
let startDate = startOfCurrentYear()
print("本年度開始時(shí)間:", dateFormatter.stringFromDate(startDate))
</pre>
本年度最后一天日期1<pre>
let endDate1 = endOfCurrentYear()
print("本年度結(jié)束時(shí)間1:", dateFormatter.stringFromDate(endDate1))
</pre>
本年度最后一天日期2<pre>
let endDate2 = endOfCurrentYear(true)
print("本年度結(jié)束時(shí)間2:", dateFormatter.stringFromDate(endDate2))
</pre>

3藻糖、得到指定年月的第一天淹冰、最后一天日期

a、指定年月的開始日期<pre>
func startOfMonth(year: Int, month: Int) -> NSDate {
let calendar = NSCalendar.currentCalendar()
let startComps = NSDateComponents()
startComps.day = 1
startComps.month = month
startComps.year = year
let startDate = calendar.dateFromComponents(startComps)!
return startDate
}
</pre>
b巨柒、指定年月的結(jié)束日期 <pre>
func endOfMonth(year: Int, month: Int, returnEndTime:Bool = false) -> NSDate {
let calendar = NSCalendar.currentCalendar()
let components = NSDateComponents()
components.month = 1
if returnEndTime {
components.second = -1
} else {
components.day = -1
}
let endOfYear = calendar.dateByAddingComponents(components,
toDate: startOfMonth(year,
month:month), options: [])!
return endOfYear
} </pre>
測試代碼:

創(chuàng)建一個(gè)日期格式器 <pre>
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy年MM月dd日 HH:mm:ss"
</pre>
當(dāng)月第一天日期<pre>
let startDate = startOfMonth(2016, month: 8)
print("2016年8月的開始時(shí)間:", dateFormatter.stringFromDate(startDate))
</pre>
當(dāng)月最后一天日期1<pre>
let endDate1 = endOfMonth(2016, month: 8)
print("2016年8月的結(jié)束時(shí)間1:", dateFormatter.stringFromDate(endDate1))
</pre>
當(dāng)月最后一天日期2<pre>
let endDate2 = endOfMonth(2016, month: 8, returnEndTime: true)
print("2016年8月的結(jié)束時(shí)間2:", dateFormatter.stringFromDate(endDate2))
</pre>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末樱拴,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子洋满,更是在濱河造成了極大的恐慌疹鳄,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芦岂,死亡現(xiàn)場離奇詭異瘪弓,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)禽最,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門腺怯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人川无,你說我怎么就攤上這事呛占。” “怎么了懦趋?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵晾虑,是天一觀的道長。 經(jīng)常有香客問我,道長帜篇,這世上最難降的妖魔是什么糙捺? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮笙隙,結(jié)果婚禮上洪灯,老公的妹妹穿的比我還像新娘。我一直安慰自己竟痰,他們只是感情好签钩,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著坏快,像睡著了一般铅檩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上莽鸿,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天昧旨,我揣著相機(jī)與錄音,去河邊找鬼富拗。 笑死臼予,一個(gè)胖子當(dāng)著我的面吹牛根灯,可吹牛的內(nèi)容都是我干的讳侨。 我是一名探鬼主播蝶防,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼创千!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起入偷,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤追驴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后疏之,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體殿雪,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年锋爪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了丙曙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡其骄,死狀恐怖亏镰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情拯爽,我是刑警寧澤索抓,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響逼肯,放射性物質(zhì)發(fā)生泄漏耸黑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一汉矿、第九天 我趴在偏房一處隱蔽的房頂上張望崎坊。 院中可真熱鬧,春花似錦洲拇、人聲如沸奈揍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽男翰。三九已至,卻和暖如春纽乱,著一層夾襖步出監(jiān)牢的瞬間蛾绎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工鸦列, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留租冠,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓薯嗤,卻偏偏與公主長得像顽爹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子骆姐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程镜粤,因...
    小菜c閱讀 6,358評論 0 17
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,212評論 0 4
  • 我在公司飯?zhí)么罂诖罂诔灾垼?xì)細(xì)品嘗著美味佳肴玻褪。飯桌對面肉渴,一個(gè)小伙子右手拿著筷子,左手拿著手機(jī)带射。雙眼盯在手機(jī)上同规,右...
    狩望_佛山閱讀 219評論 2 7
  • 文/鴻運(yùn)(中國) 捧起四書 讀讀五經(jīng) 翻閱八股 不懂不懂 竹林七賢 飲中八仙 揚(yáng)州八怪 奇人奇景 五音 七寶 九宮...
    HONGYUNDANGTOU閱讀 398評論 4 2
  • 1.request token url 未授權(quán)的令牌請求服務(wù)地址2.慕課網(wǎng)請求QQ登陸頁面時(shí)使用的帶有特定參數(shù)的U...
    金星show閱讀 193評論 0 0