时间相关
- NSLocale 本地化,一般使用默认,这里不展开
- NSTimeZone 时区,一般默认本地时区,这里不展开
- NSDate 标准时间
- NSDateFormatter 时间格式化
- NSCalendar 日历
- NSDateComponents 日历组件
- NSDateComponentsFormatter 日历组件格式化
NSDate 标准时间,以0时区时间为准,需要通过转化才是当地时间。
- 1 通过 时间格式化转化成本地时间。
- 2 通过 日历转化
- 这两种方法都与本地化和时区相关,都做好了默认转换。
NSDate 本身
- 时间创建
NSDate *date1 = [NSDate date];// 当前时间
NSDate *date2 = [NSDate dateWithTimeIntervalSinceNow:3600];// 当前时间 加 偏移
NSDate *date3 = [NSDate dateWithTimeIntervalSince1970:3600];// 距 1970年时间偏移
NSDate *date4 = [NSDate dateWithTimeIntervalSinceReferenceDate:3600];// 2001年 时间偏移 基本没用过
NSDate *date5 = [NSDate dateWithTimeInterval:3600 sinceDate:date1];// 距指定时间偏移
NSDate *date6 = [date1 dateByAddingTimeInterval:3600]; // 同上
NSDate *date6 = [NSDate distantPast];// 过去
NSDate *date7 = [NSDate distantFuture];//未来
- 时间简单操作
BOOL iseq = [date1 isEqualToDate:date2];
NSComparisonResult result = [date1 compare:date2];
NSDate *earlier = [date1 earlierDate:date2];
NSDate *later = [date1 laterDate:date2];
NSTimeInterval interval = [date1 timeIntervalSinceDate:date2];
// 简单 操作
NSDateFormatter
对于标准时间,只是用来处理操作,用于展示,需要处理。
// 时间 格式化 常用格式,关于跟多格式,
http://userguide.icu-project.org/formatparse/datetime
注意梯子
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];// 年月日 时分秒
// 时间 字符串 相互转化
NSString *dateStr = [dateFormatter stringFromDate:date1];
NSDate *strDate = [dateFormatter dateFromString:dateStr];
NSCalendar
可以获取跟多数据,提供非常多的方法,结合日历组件,
// 日历 - 时间 转化组件
NSCalendar * calendar = [NSCalendar currentCalendar];
NSUInteger unitFlags = NSCalendarUnitDay|NSCalendarUnitMonth|NSCalendarUnitYear;
NSDateComponents * component= [calendar components:unitFlags fromDate:date1]; // 添加 组件 多选
NSInteger year = [component year];
NSInteger month = [component month];
NSInteger day = [component day];
NSString * nsDateString = [NSString stringWithFormat:@"%4ld年%2ld月%2ld日",(long)year,(long)month,(long)day];
NSLog(@"%@",nsDateString);
// 组件 转化 时间
component.year = 2011;
component.month = 12;
component.day = 22;
NSDate *componetDate = [calendar dateFromComponents:component];
NSLog(@"%@",componetDate);
举例常用的 的获取 当月天数
NSRange range = [calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:date1];
NSLog(@"本月共有 %zi 天",range.length);
其他
相关 文章
http://my.oschina.net/yongbin45/blog/150667
locale
http://www.th7.cn/Program/IOS/201410/300970.shtml
http://my.oschina.net/hmj/blog/126355
http://worldligang.baijia.baidu.com/article/103214
timezone
http://my.oschina.net/yongbin45/blog/151376
http://bbs.9ria.com/thread-241634-1-1.html
calendar
http://www.cnblogs.com/wujian1360/archive/2011/09/05/2168007.html