Cocoa Foundation框架学习笔记 - NSCalendar
+ (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的更多相关文章
- 【iOS】Foundation框架 学习笔记
1.数组 OC数组不能存放nil值OC数组只能存放OC对象.不能存放非OC对象类型,比如int.struct.enum等 ====================================== ...
- phalcon(费尔康)框架学习笔记
phalcon(费尔康)框架学习笔记 http://www.qixing318.com/article/phalcon-framework-to-study-notes.html 目录结构 pha ...
- Yii框架学习笔记(二)将html前端模板整合到框架中
选择Yii 2.0版本框架的7个理由 http://blog.chedushi.com/archives/8988 刚接触Yii谈一下对Yii框架的看法和感受 http://bbs.csdn.net/ ...
- JavaSE中Collection集合框架学习笔记(2)——拒绝重复内容的Set和支持队列操作的Queue
前言:俗话说“金三银四铜五”,不知道我要在这段时间找工作会不会很艰难.不管了,工作三年之后就当给自己放个暑假. 面试当中Collection(集合)是基础重点.我在网上看了几篇讲Collection的 ...
- JavaSE中Collection集合框架学习笔记(3)——遍历对象的Iterator和收集对象后的排序
前言:暑期应该开始了,因为小区对面的小学这两天早上都没有像以往那样一到七八点钟就人声喧闹.车水马龙. 前两篇文章介绍了Collection框架的主要接口和常用类,例如List.Set.Queue,和A ...
- JavaSE中Map框架学习笔记
前言:最近几天都在生病,退烧之后身体虚弱.头疼.在床上躺了几天,什么事情都干不了.接下来这段时间,要好好加快进度才好. 前面用了三篇文章的篇幅学习了Collection框架的相关内容,而Map框架相对 ...
- JavaSE中线程与并行API框架学习笔记1——线程是什么?
前言:虽然工作了三年,但是几乎没有使用到多线程之类的内容.这其实是工作与学习的矛盾.我们在公司上班,很多时候都只是在处理业务代码,很少接触底层技术. 可是你不可能一辈子都写业务代码,而且跳槽之后新单位 ...
- JavaSE中线程与并行API框架学习笔记——线程为什么会不安全?
前言:休整一个多月之后,终于开始投简历了.这段时间休息了一阵子,又病了几天,真正用来复习准备的时间其实并不多.说实话,心里不是非常有底气. 这可能是学生时代遗留的思维惯性--总想着做好万全准备才去做事 ...
- scrapy爬虫框架学习笔记(一)
scrapy爬虫框架学习笔记(一) 1.安装scrapy pip install scrapy 2.新建工程: (1)打开命令行模式 (2)进入要新建工程的目录 (3)运行命令: scrapy sta ...
随机推荐
- MVC新手指南
MVC新手指南 2010-04-06 09:54:23 18839 次阅读 0 条评论 本文感谢东西提供 模型-视图-控制器(MVC)可能是近年来网络编程圈子里最常被提及的模式之一.目前与网络应用 ...
- QT为QLabel添加Click事件(如果我们使用组件,我们关心的是信号槽;如果我们自定义组件,我们关心的是事件)
其实就是改写了一个函数:mouseReleaseEvent,当在QLabel放开鼠标的时,就发射点击信号. #ifndef CLICKEDLABEL_H_ #define CLICKEDLABEL_H ...
- 【原创】关于Adapter的The content of the adapter has changed问题分析
关于Adapter的The content of the adapter has changed问题分析 1.问题描述 07-28 17:22:02.162: E/AndroidRuntime(1 ...
- 如何在Java客户端调用RESTful服务
在这个例子中,我们将看到如何使用java.net包实用工具,创建一个访问REST服务RESTful的客户端.当然这不是创建一个RESTful客户端最简单的方法,因为你必须自己读取服务器端的响应,以及J ...
- Android 使用全局变量传递数据
使用全局变量传递数据,所谓的全局变量类似于jee开发中的application变量.申明后,全局调用.只有当内存被清理后,才被销毁.否则一直可以调用. 还是使用点击一个button,传递一个数据到另一 ...
- js中substr与substring的用法与区别
substrsubstr(start,length)表示从start位置开始,截取length长度的字符串. var src="images/pic_1.png";alert(sr ...
- 21.allegro下鼠标形状设置[原创]
1. -- --- ----- ---
- NDK(6)eclipse下断点调试ndk代码
Using the NDK Plugin 1. First set the path to SDK and NDK: Eclipse -> Window -> Preferences -& ...
- C#中的文件同步
How to: Synchronize Files by Using Managed Code FileSyncProvider Class File Synchronization Provider ...
- 关于在c#中引用外部dll文件,在页面中找不到命名空间
最近在项目中碰到这样的问题,经过搜索,发现是vs2010的版本不对,VS默认的版本是.NET Framework 4 Client Profile,需要将他更改为.NET Framework 4 版本 ...