iOS SDK详解之NSCalendar & NSDateComponents
2015-07-11 14:08
471 查看
原创Blog,转载请注明出处
blog.csdn.net/hello_hwc
欢饮关注我的iOS SDK详解专栏
http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html
前言:NSCalendar 和 NSDateComponents是有关iOS 时间相关API很重要的两个类。最近刚好用到,这里就整理下。
NSDateComponents 只是一个容器,容器中详细包含了年月日时分等信息。
NSDate 就是一个绝对的时间,可以换算成相对1970s的时差。
OC
Swift
相对序号
例如,查看今天是在今年的第几周
根据拆分时间返回NSDate
OC
Swift
相对时间
现在往后11天10小时
OC
Swift
这个月有多少天
其中有效的identifer
一周的开始日期
时区和地区
所有的NSCalendarUnit
blog.csdn.net/hello_hwc
欢饮关注我的iOS SDK详解专栏
http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html
前言:NSCalendar 和 NSDateComponents是有关iOS 时间相关API很重要的两个类。最近刚好用到,这里就整理下。
概念
NSCalendar 顾名思义就是日历,封装了系统如何按照年月日的方式来组织时间,组织时间的方式和地区,时区有很大关系NSDateComponents 只是一个容器,容器中详细包含了年月日时分等信息。
NSDate 就是一个绝对的时间,可以换算成相对1970s的时差。
举例
拆分一个时间OC
NSDate * date = [NSDate date];//当前时间 NSCalendar * calendar = [NSCalendar currentCalendar];//当前用户的calendar NSDateComponents * components = [calendar components:NSCalendarUnitMinute | NSCalendarUnitMonth | NSCalendarUnitHour | NSCalendarUnitDay fromDate:date]; NSLog(@"%ld月%ld日%ld时%ld分" ,(long)components.month,(long)components.day,(long)components.hour,(long)components.minute);
Swift
let date = NSDate() let calendar = NSCalendar.currentCalendar() let components = calendar.components(NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay | NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitMinute, fromDate:date) NSLog("%ld月%ld日%ld时%ld分" ,components.month, components.day, components.hour, components.minute)
相对序号
例如,查看今天是在今年的第几周
NSCalendar * calendar = [NSCalendar currentCalendar]; NSDate * currentDate = [NSDate date]; NSInteger week = [calendar ordinalityOfUnit:NSCalendarUnitWeekday inUnit:NSCalendarUnitYear forDate:currentDate]; NSLog(@"今天是今年的第%ld周",week);
根据拆分时间返回NSDate
OC
NSDateComponents * components = [[NSDateComponents alloc] init]; components.year = 2015; components.month = 7; components.day = 11; components.hour = 10; components.minute = 30; components.second = 20; NSCalendar * calendar = [NSCalendar currentCalendar]; NSDate * date = [calendar dateFromComponents:components]; NSDateFormatter * formatter = [[NSDateFormatter alloc] init]; formatter.dateFormat = @"yyyy年MM月dd日hh时mm分ss秒"; NSString * str = [formatter stringFromDate:date]; NSLog(@"%@",str);
Swift
let components = NSDateComponents() components.year = 2015 components.month = 7 components.day = 11 components.hour = 10 components.minute = 30 components.second = 20 let calendar = NSCalendar.currentCalendar() let date = calendar.dateFromComponents(components) let formatter = NSDateFormatter(); formatter.dateFormat = "yyyy年MM月dd日hh时mm分ss秒"; let str = formatter.stringFromDate(date!); println(str)
相对时间
现在往后11天10小时
OC
NSDateComponents * components = [[NSDateComponents alloc] init]; components.day = 11; components.hour = 10; NSCalendar * calendar = [NSCalendar currentCalendar]; NSDate * currentDate = [NSDate date]; NSDate * nextData = [calendar dateByAddingComponents:components toDate:currentDate options:NSCalendarMatchStrictly]; NSDateFormatter * formatter = [[NSDateFormatter alloc] init]; formatter.dateFormat = @"yyyy年MM月dd日hh时mm分ss秒"; NSString * str = [formatter stringFromDate:nextData]; NSLog(@"%@",str);
Swift
let components = NSDateComponents() components.day = 11; components.hour = 10; let calendar = NSCalendar.currentCalendar(); let currentDate = NSDate() let nextDate = calendar.dateByAddingComponents(components, toDate: currentDate, options:NSCalendarOptions.MatchStrictly) let formatter = NSDateFormatter(); formatter.dateFormat = "yyyy年MM月dd日hh时mm分ss秒"; let str = formatter.stringFromDate(nextDate!) NSLog("%@",str);
这个月有多少天
NSCalendar * calendar = [NSCalendar currentCalendar]; NSDate * currentDate = [NSDate date]; NSRange range = [calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:currentDate];
其他
创建不同地区的NSCalendarinitWithCalendarIdentifier:
其中有效的identifer
NSString * const NSGregorianCalendar; NSString * const NSBuddhistCalendar; NSString * const NSChineseCalendar; NSString * const NSHebrewCalendar; NSString * const NSIslamicCalendar; NSString * const NSIslamicCivilCalendar; NSString * const NSJapaneseCalendar; NSString * const NSRepublicOfChinaCalendar; NSString * const NSPersianCalendar; NSString * const NSIndianCalendar; NSString * const NSISO8601Calendar;
一周的开始日期
– firstWeekday
时区和地区
locale timeZone
所有的NSCalendarUnit
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 = kCFCalendarUnitYearForWeekOfYear NSCalendarCalendarUnit = (1 << 20), NSTimeZoneCalendarUnit = (1 << 21),
相关文章推荐
- 如何成为一名有优秀的iOS工程师
- iOS3D转场动画
- iOS开发雷达动画效果实现
- ios开发 预处理.pch文件
- iOS--NSDictionary
- iOS字典转模型方法代理片段
- IOS WebView中JS和OC相互调用
- iOSpush过后返回多级界面
- IOS 给Button设置一个简单的动画
- iOS常见警告解决
- iOS 8 Xcode6 设置Launch Image 启动图片
- 关于友盟社会化分享框架的一些使用心得
- 分享一些ios干货
- IOS xib 和storyboard的区别
- IOS 多线程 RUNLOOP 机制 (二)
- IOS 多线程 RUNLOOP 机制 (一)
- iOS在当前视图中推出另外一个背景透明的视图控制器
- 修复iOS7下leftBarButtonItem位置相比之前版本靠右的问题
- ios崩溃日志1
- iOS基础(c)-内存管理