+ (void)beginTest
{
/*
FOUNDATION_EXPORT NSString * const NSGregorianCalendar; //公历(常用)
FOUNDATION_EXPORT NSString * const NSBuddhistCalendar; //佛教日历
FOUNDATION_EXPORT NSString * const NSChineseCalendar; //中国农历(常用)
FOUNDATION_EXPORT NSString * const NSHebrewCalendar; //希伯来日历
FOUNDATION_EXPORT NSString * const NSIslamicCalendar; //伊斯兰历
FOUNDATION_EXPORT NSString * const NSIslamicCivilCalendar; //伊斯兰教日历
FOUNDATION_EXPORT NSString * const NSJapaneseCalendar; //日本日历(和历,常用)
FOUNDATION_EXPORT NSString * const NSRepublicOfChinaCalendar; //中华民国日历(台湾)
FOUNDATION_EXPORT NSString * const NSPersianCalendar; //波斯历
FOUNDATION_EXPORT NSString * const NSIndianCalendar; //印度日历
FOUNDATION_EXPORT NSString * const NSISO8601Calendar; //ISO8601(但是现在还不可用)
*/ //-- System Locale Information //+ currentCalendar
//取得当前用户的逻辑日历
//currentCalendar取得的值会一直保持在cache中,第一次取得以后如果用户修改该系统日历设定,这个值也不会改变。
NSCalendar *calendar = [NSCalendar currentCalendar];
NSLog(@"calendar = %@",calendar); //+ (id)autoupdatingCurrentCalendar
//取得当前用户的逻辑日历
//用autoupdatingCurrentCalendar,那么每次取得的值都会是当前系统设置的日历的值。
NSString *autoupdatingCurrent = [NSCalendar autoupdatingCurrentCalendar];
NSLog(@"autoupdatingCurrent = %@",autoupdatingCurrent); //-- //-- Initializing a Calendar //- initWithCalendarIdentifier:
//如果想要用公历的时候,就要将NSDateFormatter的日历设置成公历。否则随着用户的系统设置的改变,取得的日期的格式也会不一样。
NSCalendar *initCalendar = [[[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setCalendar:initCalendar]; //- setFirstWeekday:
//设置第一个工作日
//设定每周的第一天从星期几开始,比如:
//. 如需设定从星期日开始,则value传入1
//. 如需设定从星期一开始,则value传入2
//. 以此类推
[initCalendar setFirstWeekday:]; //– setLocale:
//设置设置区域
[initCalendar setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]]; //设定作为(每年及每月)第一周必须包含的最少天数,比如:. 如需设定第一周最少包括7天,则value传入7
//– setMinimumDaysInFirstWeek:
[initCalendar setMinimumDaysInFirstWeek:]; //– setTimeZone:
//设置时区
[initCalendar setTimeZone:[NSTimeZone defaultTimeZone]]; //-- //-- Getting Information About a Calendar //– calendarIdentifier
//返回日历标示符
NSString *calendarIdentifier = [initCalendar calendarIdentifier];
NSLog(@"calendarIdentifier = %@",calendarIdentifier); //– firstWeekday
//返回日历指定的每周的第一天从星期几开始。缺省为星期天,即firstWeekday = 1
int firstWeekday = [initCalendar firstWeekday];
NSLog(@"firstWeekday = %d",firstWeekday); //– locale
// 返回日历指定的地区信息。
NSLocale *locale = [initCalendar locale];
NSLog(@"locale = %@",locale.localeIdentifier); //– maximumRangeOfUnit: //返回单元的最大范围
//- minimumRangeOfUnit: //返回单元的最小范围 //比如Day Calendar Unit就是一个月最多31天这个意思
NSRange range = [initCalendar maximumRangeOfUnit:NSDayCalendarUnit];
NSLog(@"range = %d",range.length); //- minimumDaysInFirstWeek
//返回日历指定的第一周必须包含的最少天数。
int minimumDays = [initCalendar minimumDaysInFirstWeek];
NSLog(@"minimumDays = %d",minimumDays); //- ordinalityOfUnit:inUnit:forDate:
//在一个给定的时间,小日历单元如(一天)在大日历单元(一周)中的序数。
//比如forDate参数是星期一,而且firstWeekday 参数被设置为2(也就是星期一为一周的第一天),那么返回为1
//通过这个函数可以判断 例如 :给定的日期是在一周的第几天,或一月的第几周。一年的第几个月。一年的第几天等
//注:firstWeekday的设定会影响这个函数的返回值
int ordinality = [initCalendar ordinalityOfUnit:NSWeekdayCalendarUnit inUnit:NSWeekCalendarUnit forDate:[NSDate date]];
NSLog(@"ordinality = %d",ordinality); //- rangeOfUnit:inUnit:forDate:
//一个小日历单元下。大日历单元的范围 例如 小日历单元是天。大日历单元是周。那么范围就是7天。就是1-7
NSRange rangeOfUnit = [initCalendar rangeOfUnit:NSWeekdayCalendarUnit inUnit:NSWeekCalendarUnit forDate:[NSDate date]];
NSLog(@"rangeOfUnit = %d",rangeOfUnit.length); //– rangeOfUnit:startDate:interval:forDate:
//用于返回日期date(参数)所在的那个日历单元unit(参数)的开始时间(sDate)。
//其中参数unit指定了日历单元,参数sDate用于返回日历单元的第一天,参数unitSecs用于返回日历单元的长度(以秒为单位),参数date指定了一个特定的日期。
//如果startDate和interval均为可计算的,那么函数返回YES否则返回NO.比如:
NSDate *dateOut = [NSDate date];
NSDate **sDate = &dateOut; NSDateComponents *dc = [[NSDateComponents alloc] init];
[dc setYear: ];
[dc setMonth: ];
[dc setDay: ]; NSDate *date = [calendar dateFromComponents:dc];
[dc release];
NSTimeInterval intOut;
NSTimeInterval *intervalOut = &intOut; if ([initCalendar rangeOfUnit:NSWeekCalendarUnit startDate:sDate interval:intervalOut forDate:date]){
NSLog(@"%@", [*sDate description]);
NSLog(@"%f", *intervalOut///);
}
else{
NSLog(@"Can not be calculated!");
} //- timeZone:
//返回日历指定的时区信息。
NSTimeZone *timeZone = [initCalendar timeZone];
NSLog(@"timeZone = %@",timeZone.abbreviation); //-- //-- Calendrical Calculations //- components:fromDate:
//返回时间组件
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSDateComponents *comps = [initCalendar components:unitFlags fromDate:[NSDate date]];
NSLog(@"NSDateComponents - %d",comps.year); //- components:fromDate:toDate:options:
//返回时间组件 比较2个日期
NSDate *startDate = date;
NSDate *endDate = [NSDate date];
unsigned int unitFlags2 = NSMonthCalendarUnit | NSDayCalendarUnit;
NSDateComponents *comps2 = [initCalendar components:unitFlags2 fromDate:startDate toDate:endDate options:];
int months = [comps2 month];
int days = [comps2 day];
NSLog(@"months = %d days = %d",months,days); //- dateByAddingComponents:toDate:options:
//追加日期 并返回一个新日期
//
NSDate *currentDate = [NSDate date];
NSDateComponents *comps3 = [[NSDateComponents alloc] init];
[comps3 setMonth:];
[comps3 setDay:];
NSDate *newDate = [initCalendar dateByAddingComponents:comps3 toDate:currentDate options:];
[comps3 release];
NSLog(@"newDate = %@",newDate); //- dateFromComponents:
//创建日期
{
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setYear:];
[comps setMonth:];
[comps setDay:];
[comps setHour:];
[comps setMinute:];
[comps setSecond:];
NSDate *date = [calendar dateFromComponents:comps];
[comps release];
NSLog(@"date = %@",date);
}
}

Cocoa Foundation框架学习笔记 - NSCalendar的更多相关文章

  1. 【iOS】Foundation框架 学习笔记

    1.数组 OC数组不能存放nil值OC数组只能存放OC对象.不能存放非OC对象类型,比如int.struct.enum等 ====================================== ...

  2. phalcon(费尔康)框架学习笔记

    phalcon(费尔康)框架学习笔记 http://www.qixing318.com/article/phalcon-framework-to-study-notes.html 目录结构   pha ...

  3. Yii框架学习笔记(二)将html前端模板整合到框架中

    选择Yii 2.0版本框架的7个理由 http://blog.chedushi.com/archives/8988 刚接触Yii谈一下对Yii框架的看法和感受 http://bbs.csdn.net/ ...

  4. JavaSE中Collection集合框架学习笔记(2)——拒绝重复内容的Set和支持队列操作的Queue

    前言:俗话说“金三银四铜五”,不知道我要在这段时间找工作会不会很艰难.不管了,工作三年之后就当给自己放个暑假. 面试当中Collection(集合)是基础重点.我在网上看了几篇讲Collection的 ...

  5. JavaSE中Collection集合框架学习笔记(3)——遍历对象的Iterator和收集对象后的排序

    前言:暑期应该开始了,因为小区对面的小学这两天早上都没有像以往那样一到七八点钟就人声喧闹.车水马龙. 前两篇文章介绍了Collection框架的主要接口和常用类,例如List.Set.Queue,和A ...

  6. JavaSE中Map框架学习笔记

    前言:最近几天都在生病,退烧之后身体虚弱.头疼.在床上躺了几天,什么事情都干不了.接下来这段时间,要好好加快进度才好. 前面用了三篇文章的篇幅学习了Collection框架的相关内容,而Map框架相对 ...

  7. JavaSE中线程与并行API框架学习笔记1——线程是什么?

    前言:虽然工作了三年,但是几乎没有使用到多线程之类的内容.这其实是工作与学习的矛盾.我们在公司上班,很多时候都只是在处理业务代码,很少接触底层技术. 可是你不可能一辈子都写业务代码,而且跳槽之后新单位 ...

  8. JavaSE中线程与并行API框架学习笔记——线程为什么会不安全?

    前言:休整一个多月之后,终于开始投简历了.这段时间休息了一阵子,又病了几天,真正用来复习准备的时间其实并不多.说实话,心里不是非常有底气. 这可能是学生时代遗留的思维惯性--总想着做好万全准备才去做事 ...

  9. scrapy爬虫框架学习笔记(一)

    scrapy爬虫框架学习笔记(一) 1.安装scrapy pip install scrapy 2.新建工程: (1)打开命令行模式 (2)进入要新建工程的目录 (3)运行命令: scrapy sta ...

随机推荐

  1. 怎么修改mysql密码

    1.用root 进入mysql后mysql>set password =password('你的密码');mysql>flush privileges; 2.使用GRANT语句 mysql ...

  2. 在CentOS下面编译WizNote Qt Project

    编译环境 CentOS 64位 Desktop 版本:6.5 编译前的准备: CentOS的用户默认没有root权限,如果当前用户没有权限root,则可以在终端里面执行下面的命令: su root s ...

  3. form提交的时候使用method=get导致乱码

    一个a.jsp提交给b.jsp, b.jsp中使用 request.setCharacterEncoding("UTF-8"); 解决乱码 a.jsp中的form忘了写method ...

  4. hive0.13.1配置hwi

    1 寻找hive-hwi-*.war文件 不清楚什么原因在hive0.13.1版本中的lib文件夹下没有hive-hwi-0.13.0.war,也就是没有*.war的文件. 所以用hive 0.12. ...

  5. POJ 1903 & ZOJ 2469 & UVA 1326 Jurassic Remains (部分枚举)

    题意:给定n个只有大写字母组成的字符串,选取尽可能多的字符串,使得这些字符串中每个字母的个数都是偶数.n<=24 思路:直接枚举每个字符串的选或不选,复杂度是O(2^n).其实还有更简便的方法. ...

  6. java实现给图片添加水印

    package michael.io.image; import java.awt.AlphaComposite; import java.awt.Graphics2D; import java.aw ...

  7. JWFD开源项目官方网站预览

    自己做的...感觉还比较正规哈....JWFD开源项目还是需要一个官方网站的...

  8. java 反编译插件 JD-Eclipse 和 JD-IntelliJ

    去官网 : http://jd.benow.ca/ 找到 JD-Eclipse 和  JD-IntelliJ,下载,前者安在eclipse上,后者安在as上.

  9. Android OTA 升级之三:生成recovery.img

    Android OTA 升级之三:生成recovery.img 作者: 宋立新 Email:zjujoe@yahoo.com 前言 得到了ota升级包后,我们就可以用它来升级系统了.Android 手 ...

  10. 三方贸易-drop ship

    一.三方贸易的简单理解 三方贸易:即当客户向我方下达采购订单要求订购货物,我方再向供应商下达相同采购订单,并要求供应商直接送货至客户处的交易形式,待交易完成后,由供应商向我方开具应收票据,我方向客户开 ...