时间相关 - NSDate NSDateFormatter NSCalendar

时间相关

  • 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

你可能感兴趣的:(时间相关 - NSDate NSDateFormatter NSCalendar)