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 ...
随机推荐
- C#程序大打开
打开一个已经存在的工程: 1.用vs打开(.sln)解决方案的文件.(若提示VS提示版本不一致,可用方法二) 2.删除(.sln)的文件.打开项目(.csproj) 文件或 (.vbproj) 文件, ...
- Rate Limiter设计
先存着,以后再写 http://iamzhongyong.iteye.com/blog/1982113 http://baike.baidu.com/view/2530454.htm https:// ...
- SSIS ->> Script Debugging and Troubleshooting
Breakpoint是调试过程中最重要的手段,不仅对于Script Task和Script Component,对于任何其他的组件也是如此.可以在某个Event(如OnError)触发的时候设置断点来 ...
- .NET单例模式-------各种写法&&验证
.NET单例模式-------各种写法&&验证 前言 单例模式对大家来说都不陌生,也很容易搞懂其原理,本篇文章也不提供单例模式的详细原理解析,本篇文章的目的是展示在C#中单例模式的各种 ...
- protobuf php
关于protobuf php,版本不知哪个好: https://github.com/yuangu/pb4php https://github.com/drslump/Protobuf-PHP htt ...
- 自定义View(7)官方教程:自定义View(含onMeasure),自定义一个Layout(混合组件),重写一个现有组件
Custom Components In this document The Basic Approach Fully Customized Components Compound Controls ...
- java中String类学习
java中String类的相关操作如下: (1)初始化:例如,String s = “abc”; (2)length:返回字符串的长度. (3)charAT:字符操作,按照索引值获得字符串中的指定字符 ...
- Sublime Text 插件列表(整理中...)
作为Java Web的开发者,前端和后端的技术都会用到,用了几款文本编辑器,Uedit32.EditPlus.Sublime Text等,发现还是Sublime Text用起来最方便. 首先安装pac ...
- ASP.NET26 个常用性能优化方法
数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源. ASP.NET中提供了连接池(Co ...
- gitflow workflow
https://www.atlassian.com/git/tutorials/comparing-workflows/forking-workflow Dream big, work smart, ...