ios-學習點-日曆工具類

來源:互聯網
上載者:User

標籤:

 

#import <Foundation/Foundation.h>#import "monthModel.h"#import "dayModel.h"#import "SolarAndLunerHeader.h"@interface PublicUtils : NSObject#pragma mark將時間本地化+(NSDate *)getLocalDataWithData:(NSDate *)date;#pragma mark擷取天數+(NSRange)getRangefromSmallUtilInBigUtil:(NSDate *)date;#pragma mark擷取小單位在大單位中得係數,主要用於根據日期獲得今天是星期幾,預設setfirstweekday為1就是從周日開頭的+(NSInteger)getCountFromSmallUtilInBigUtil:(NSDate *)date;#pragma mark 獲得當前月第一天的日期+(NSDate *)getCurrentMonthFirstDay;#pragma mark 獲得次月第一天的日期+(NSDate *)getnextMonthFirstDay;#pragma mark 組裝一個空白資料,當月到次月的資料沒有變化的封裝,具體細節由伺服器中取出的資料再維護一下得出真實的資料+(NSMutableArray *)createFixedDData;#pragma mark 同步月份資料,只是星期同步+(void)copyWeekWithDictionary:(NSMutableArray *)array;@end
/* 1.date 轉 NSDateComponents 通過日曆會將時間本地化 2.反過來,NSDateComponents 轉date 會逆向行為會講轉出來的時間會轉到0時區的時間 總結:本地時間轉NSDateComponents用本地化日曆轉的話,最好將日曆的時區設定為0時區,否則就會2次本地化時間出錯 反過來也一樣。 */#import "PublicUtils.h"@implementation PublicUtils#pragma mark將時間本地化+(NSDate *)getLocalDataWithData:(NSDate *)date{   NSTimeZone *timezone= [NSTimeZone systemTimeZone];   NSInteger interval= [timezone secondsFromGMT];  return  [date dateByAddingTimeInterval:interval];}#pragma mark擷取天數+(NSRange)getRangefromSmallUtilInBigUtil:(NSDate *)date{    NSCalendar *calendar = [NSCalendar currentCalendar];    NSRange range = [calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:date];    return range;}#pragma mark擷取小單位在大單位中得係數,主要用於根據日期獲得今天是星期幾,預設setfirstweekday為1就是從周日開頭的+(NSInteger)getCountFromSmallUtilInBigUtil:(NSDate *)date{   NSCalendar *calendar = [NSCalendar currentCalendar];  return  [calendar ordinalityOfUnit:NSCalendarUnitWeekday inUnit:NSCalendarUnitWeekOfMonth forDate:date];}#pragma mark 獲得當前月第一天的日期+(NSDate *)getCurrentMonthFirstDay{   NSDate *date= [NSDate date];   NSCalendar *calender= [NSCalendar currentCalendar];   NSDateComponents *compt= [calender components:(NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay) fromDate:date];  [compt setDay:1];   NSDate *currentdate= [calender dateFromComponents:compt];  return [PublicUtils getLocalDataWithData:currentdate];}#pragma mark 獲得次月第一天的日期+(NSDate *)getnextMonthFirstDay{    NSDate *date= [NSDate date];    NSCalendar *calender= [NSCalendar currentCalendar];//同比下面這個不用轉成0時區    NSDateComponents *compt= [calender components:(NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay) fromDate:date];    if (compt.month==12) {        [compt setMonth:compt.month+1];        [compt setYear:compt.year+1];    }else {        [compt setMonth:compt.month+1];    }     [compt setDay:1];    NSDate *currentdate= [calender dateFromComponents:compt];    return [PublicUtils getLocalDataWithData:currentdate];}#pragma mark 從日期裡面擷取各個元素+(NSDateComponents *)changeToCompontsFromDate:(NSDate *)date{    NSCalendar *calender= [NSCalendar currentCalendar];    [calender setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];//(設定這個的目的,傳進來的是一個本地時間,再用本地是日曆轉一次,就會造成2次本地化就會有誤差,所以將日曆的時區轉成0時區,來避免2次轉換)    NSDateComponents *compt= [calender components:(NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond) fromDate:date];    return compt;}

 

ios-學習點-日曆工具類

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.