NSCalendar   日历

   /**1.  System Locale Information 取得当前用户的逻辑日历(logical calendar) 两种类方法**/// 1.1 取得当前用户的逻辑日历// currentCalendar取得的值会一直保持在cache中,第一次取得以后如果用户修改该系统日历设定,这个值也不会改变。NSCalendar *currentcalender = [NSCalendar currentCalendar];NSLog(@"currentcalender = %@",currentcalender.calendarIdentifier);// currentcalender = gregorian// 1.2 取得当前用户的逻辑日历// 用autoupdatingCurrentCalendar,那么每次取得的值都会是当前系统设置的日历的值。NSCalendar *calendar2 = [NSCalendar autoupdatingCurrentCalendar];NSLog(@"calendar2 = %@",calendar2.calendarIdentifier);  // calendar2 = gregorian/** 2.Initializing a Calendar2.1 - (id)initWithCalendarIdentifier:(NSString *)identifier;初始化为各种日历。identifier的范围可以是:NSGregorianCalendar 阳历NSBuddhistCalendar 佛历NSChineseCalendar 中国日历NSHebrewCalendar 希伯来日历NSIslamicCalendar 伊斯兰日历NSIslamicCivilCalendar 伊斯兰民事日历NSJapaneseCalendar 日本日历*/NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];NSCalendar *calendar3 = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierJapanese];NSLog(@"calendar3 = %@",calendar3.calendarIdentifier); // calendar3 = japaneseNSCalendar *calendar4 = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierChinese];NSLog(@"calendar4 = %@",calendar4.calendarIdentifier);  // calendar4 = chinese/*2.2 - (void)setFirstWeekday:(NSUInteger)value;设定每周的第一天从星期几开始,比如:.  如需设定从星期日开始,则value传入1.  如需设定从星期一开始,则value传入2.  以此类推详细信息请参阅FirstWeekday属性*/[calendar setFirstWeekday:2];/*2.3 - (void)setLocale:(NSLocale *)locale;  设置区域*/[calendar setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];/*2.4 - (void)setMinimumDaysInFirstWeek:(NSUInteger)mdw  *///设定作为(每年及每月)第一周必须包含的最少天数,比如:.  如需设定第一周最少包括7天,则value传入7[calendar setMinimumDaysInFirstWeek:7];/*2.5 - (void)setTimeZone:(NSTimeZone *)tz  *///设置时区[calendar setTimeZone:[NSTimeZone defaultTimeZone]];/**3.   Getting Information About a Calendar*//*3.1 - (NSString *)calendarIdentifier 返回日历标示符 */NSString *canlendarIdentifier = calendar.calendarIdentifier;NSLog(@"canlendarIdentifier = %@",canlendarIdentifier);  //canlendarIdentifier = gregorian/*3.2 - (NSUInteger)firstWeekday  返回日历指定的每周的第一天从星期几开始。缺省为星期天,即firstWeekday = 1*/NSUInteger firstWeekday = [calendar firstWeekday];NSLog(@"firstWeekday = %d",firstWeekday);  // firstWeekday = 2/*3.3 - (NSLocale *)locale 返回日历指定的地区信息*/NSLocale *locale = [calendar locale];NSLog(@"localeIdentifier = %@",locale.localeIdentifier);   // localeIdentifier = en_US/*3.4 //- (NSRange)maximumRangeOfUnit:(NSCalendarUnit)unit    //返回单元的最大范围//- (NSRange)minimumRangeOfUnit:(NSCalendarUnit)unit    //返回单元的最小范围 //比如Day Calendar Unit就是一个月最多31天这个意思Calendar UnitsSpecify calendrical units such as day and month.enum {NSEraCalendarUnit = kCFCalendarUnitEra,NSYearCalendarUnit = kCFCalendarUnitYear,NSMonthCalendarUnit = kCFCalendarUnitMonth,NSDayCalendarUnit = kCFCalendarUnitDay,NSHourCalendarUnit = kCFCalendarUnitHour,NSMinuteCalendarUnit = kCFCalendarUnitMinute,NSSecondCalendarUnit = kCFCalendarUnitSecond,NSWeekCalendarUnit = kCFCalendarUnitWeek,NSWeekdayCalendarUnit = kCFCalendarUnitWeekday,NSWeekdayOrdinalCalendarUnit = kCFCalendarUnitWeekdayOrdinal,NSQuarterCalendarUnit = kCFCalendarUnitQuarter,NSWeekOfMonthCalendarUnit = kCFCalendarUnitWeekOfMonth,NSWeekOfYearCalendarUnit = kCFCalendarUnitWeekOfYear,NSYearForWeekOfYearCalendarUnit = kCFCalendarUnitYearForWeekOfYearNSCalendarCalendarUnit = (1 << 20),NSTimeZoneCalendarUnit = (1 << 21),};typedef NSUInteger NSCalendarUnit;*/// 月Day的最大范围NSRange maxRangeDay = [calendar maximumRangeOfUnit:NSCalendarUnitDay];NSLog(@"maxRangeDay = %@",NSStringFromRange(maxRangeDay));  // maxRangeDay = {1, 31}// 月Day的最小范围NSRange minRangeDay = [calendar minimumRangeOfUnit:NSCalendarUnitDay];NSLog(@"minRangeDay = %@",NSStringFromRange(minRangeDay));  // minRangeDay = {1, 28}// 每年的月的最大范围NSRange maxRangeMonth = [calendar maximumRangeOfUnit:NSCalendarUnitMonth];NSLog(@"maxRangeMonth = %@",NSStringFromRange(maxRangeMonth));  // maxRangeMonth = {1, 12}// 每个月周的最小范围NSRange minRangeWeekOfMonth = [calendar minimumRangeOfUnit:NSCalendarUnitWeekOfMonth];NSLog(@"minRangeWeekOfMonth = %@",NSStringFromRange(minRangeWeekOfMonth));    //minRangeWeekOfMonth = {1, 4}/* 3.5 - (NSUInteger)minimumDaysInFirstWeek 返回日历指定的第一周必须包含的最少天数。*/NSUInteger minimumDays = [calendar minimumDaysInFirstWeek];NSLog(@"minimumDays = %d",minimumDays);      // minimumDays = 7/* 3.6 - (NSUInteger)ordinalityOfUnit:(NSCalendarUnit)smaller inUnit:(NSCalendarUnit)larger forDate:(NSDate *)date*///在一个给定的时间,小日历单元如(一天)在大日历单元(一周)中的序数。//比如forDate参数是星期一,而且firstWeekday 参数被设置为2(也就是星期一为一周的第一天),那么返回为1//通过这个函数可以判断 例如 :给定的日期是在一周的第几天,或一月的第几周。一年的第几个月。一年的第几天等//注:firstWeekday的设定会影响这个函数的返回值int ordinality = [calendar ordinalityOfUnit:NSCalendarUnitWeekday inUnit:NSCalendarUnitMonth forDate:[NSDate date]];NSLog(@"ordinality = %@",[NSString stringWithFormat:@"%d",ordinality ]);  // ordinality = 1/*3.7 - (NSRange)rangeOfUnit:(NSCalendarUnit)smaller inUnit:(NSCalendarUnit)larger forDate:(NSDate *)date */// 一个小日历单元下。大日历单元的范围 例如 小日历单元是天。大日历单元是周。那么范围就是7天。就是1-7NSRange rangeUnit = [calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:[NSDate date]];NSLog(@"rangeUnit = %@",NSStringFromRange(rangeUnit));    // rangeUnit = {1, 31}/*3.8 - (BOOL)rangeOfUnit:(NSCalendarUnit)unit startDate:(NSDate **)datep interval:(NSTimeInterval *)tip forDate:(NSDate *)date  //用于返回日期date(参数)所在的那个日历单元unit(参数)的开始时间(sDate)。//其中参数unit指定了日历单元,参数sDate用于返回日历单元的第一天,参数unitSecs用于返回日历单元的长度(以秒为单位),参数date指定了一个特定的日期。//如果startDate和interval均为可计算的,那么函数返回YES否则返回NO.*/NSDate *dateOut = [NSDate date];NSDateComponents *dc = [[NSDateComponents alloc] init];dc.year = 2014;dc.month = 10;dc.day = 1;NSDate *dateCalendar = [currentcalender dateFromComponents:dc];NSTimeInterval startTime;NSTimeInterval *startTimeInt = &startTime;if ([calendar rangeOfUnit:NSCalendarUnitDay startDate:&dateOut interval:startTimeInt forDate:dateCalendar]) {NSLog(@"%@",[dateOut description]);  // 2014-09-30 16:00:00 +0000NSLog(@"%f",*startTimeInt); // 86400.000000}else{NSLog(@"Can not be calculated!");}//3.9 - (NSTimeZone *)timeZone//返回日历指定的时区信息。NSTimeZone *timeZone = [calendar timeZone];NSLog(@"timeZone = %@",timeZone.abbreviation);  // timeZone = GMT+8/** 4 Calendrical Calculations  日历计算*///4.1  - (NSDateComponents *)components:(NSUInteger)unitFlags fromDate:(NSDate *)date// NSDateComponents 返回时间组件unsigned unitFlags =  NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond;NSDate *date = [NSDate date];NSDateComponents *components = [calendar components:unitFlags fromDate:date];int year = components.year;int month = components.month;int day = components.day;int hour = components.hour;int minute = components.minute;int second = components.second;NSLog(@"%d,%d,%d,%d,%d,%d",year,month,day,hour,minute,second); // 2014,12,7,17,51,32//4.2  - (NSDateComponents *)components:(NSUInteger)unitFlags fromDate:(NSDate *)startingDate toDate:(NSDate *)resultDate options:(NSUInteger)opts//返回时间组件 比较2个日期的时间差值NSDate *startDate = date;NSDate *endDate = [[NSDate alloc] initWithTimeIntervalSinceNow:86400*2 ];unsigned int unitFlags2 = NSCalendarUnitYear | NSCalendarUnitMonth |NSCalendarUnitDay;NSDateComponents *comps2 = [calendar components:unitFlags2 fromDate:startDate  toDate:endDate  options:0];int years = [comps2 year];int months = [comps2 month];int days = [comps2 day];NSLog(@"years = %d ,months = %d days = %d",years,months,days);  // years = 0 ,months = 0 days = 2//输出: years = 0 ,months = 0 days = 2// 4.3 - (NSDate *)dateByAddingComponents:(NSDateComponents *)comps toDate:(NSDate *)date options:(NSUInteger)opts// 追加日期 并返回一个新日期NSDate *currentDate = [NSDate date];NSDateComponents *comps3 = [[NSDateComponents alloc] init];[comps3 setMonth:2];[comps3 setDay:3];NSDate *newDate = [calendar dateByAddingComponents:comps3 toDate:currentDate  options:0];NSLog(@"newDate = %@",newDate);  // newDate = 2015-02-10 09:51:32// 4.4    - (NSDate *)dateFromComponents:(NSDateComponents *)comps//创建日期NSDateComponents *comps = [[NSDateComponents alloc] init];[comps setYear:2014];[comps setMonth:10];[comps setDay:1];[comps setHour:12];[comps setMinute:0];[comps setSecond:0];NSDate *createdate = [calendar dateFromComponents:comps];NSLog(@"createdate = %@",createdate);  // createdate = 2014-10-01 04:00:00 +0000

NSCalendar 日历相关推荐

  1. iOS - OC NSCalendar 日历iOS - OC NSCalendar 日历

    本文目录 前言 1.日历的创建 2.日历的设置 3.日历设置信息的获取 4.日历信息的获取 回到顶部 前言 @interface NSCalendar : NSObject <NSCopying ...

  2. iOS - OC NSCalendar 日历

    前言 @interface NSCalendar : NSObject <NSCopying, NSSecureCoding> NSCalendar 对世界上现存的常用的历法进行了封装,既 ...

  3. 关于NSCalendar 日历的学习记录

    系统中定义的日历有: NSString * const NSGregorianCalendar; 公历(常用) NSString * const NSBuddhistCalendar; 佛教日历 NS ...

  4. iOS - Swift NSCalendar 日历

    前言 public class NSCalendar : NSObject, NSCopying, NSSecureCoding NSCalendar 对世界上现存的常用的历法进行了封装,既提供了不同 ...

  5. NSCalendar 日历类

    Cocoa中对日期和时间的处理 NSCalendar (一) NSCalendar用于处理时间相关问题.比如比较时间前后.计算日期所的周别等. 1. 创建或初始化可用以下方法 + (id)curren ...

  6. ios 计算两个时间相差秒数_Ios中时间差的计算,NSData与NSCalendar(日历)对象

    时间差的计算: 计算过去时间与当前时间的时间差 注意:其中的NSDateFormatter时间格式化类初始化非常消耗性能,如果多次使用,建议定义为全局. NSString *timeStr = @&q ...

  7. 日历,日期类(copy)

    NSDate *date=[NSDate date];//格林尼治时间NSLog(@"%@",date);NSCalendar *calendar=[NSCalendar curr ...

  8. objective-c calendar 日历(2)

    主要有以下类: NSDate -- 表示一个绝对的时间点 NSTimeZone -- 时区信息 NSLocale -- 本地化信息 NSDateComponents -- 一个封装了具体年月日.时秒分 ...

  9. 日期 日历的一些常用类和方法

    http://www.cnblogs.com/wayne23/archive/2013/03/25/2981009.html http://zcw-java.iteye.com/blog/189994 ...

  10. NSDateFormatter and NSDateComponents

    NSDateFormatter调整时间格式的代码 在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理. 例如: //实例化一个NSD ...

最新文章

  1. JSON——Jackson 时间格式化输入输出
  2. springboot配置文件加载位置
  3. 解决 wcf HTTP 无法注册 另一应用程序正在使用 TCP 端口 80
  4. Windows server 2003 R2 文件服務管理測試報告
  5. 1.1.4 错题知识整理(机器语言、汇编语言、正则语言、解释程序、编译、汇编)
  6. 什么是区块链?什么是比特币?一文轻松看懂!
  7. SharePoint 2013 - System Features
  8. 高等数学上-赵立军-北京大学出版社-题解-练习6.1
  9. 如何在linux当中,大量的添加用户
  10. mybatis 报错 with invalid types () or values 0. Cause: java.lang.NoSuchMethodException:
  11. iOS的GIF动画效果实现
  12. c# 委托和委托事件
  13. 编译ffmpeg:no match insn: lbu $r16,0($r5)
  14. 查找两个表中主键一样但其它字段数值不一样的记录
  15. Sigar使用详解(免费)
  16. 学美容化妆培训学校到哪里最好
  17. 警告: Establishing SSL connection without server
  18. 基于 jquery ui 扩展Widget
  19. 微信翻译,快把上海老外搞疯了
  20. mac os linux pageup pagedown,[整理]Mac中的类似于Windows中的PageUp和PageDown以及Ctrl+Home和Ctrl+End...

热门文章

  1. Linux中Centos7目录和文件管理
  2. 如何解决IDEA或PyCharm 莫名出现的黑色斑块,或者说文字下方出现随鼠标移动的黑色底色
  3. SQL Server 中WITH (NOLOCK)浅析(大自然的搬运工)
  4. mongodb arm linux,linux – 在ARM上构建mongo shell 3.2.x(armv7l / arm64 / aarch64) – 分段错误...
  5. 阿里云虚拟机外网访问yarn 8088 hdfs 50070
  6. YOLOv8之C2f模块——与YOLOv5的C3模块对比
  7. 第二类增值电信业务没有办理业务许可证开展经营活动合法嘛?
  8. VUE+OpenLayer动态显示船舶位置信息
  9. winform窗体运行时的大小和设计时不一致
  10. 在Android Studio上导入别人的项目后报错提示:......drawable-hdpi\xxx.9.png: AAPT: error: file failed to compile.