黑马程序员技术交流社区

标题: NSDate总结 [打印本页]

作者: u37kl    时间: 2016-2-19 18:50
标题: NSDate总结
#NSDate(NSDate类用来表示时间的类)
1、创建一个NSDate对象:NSDate *d1 = [NSDate date]; // 获得当前0时区的时间。
    // 日期的格式化:
    // yyyy--年
    // MM--月
    // dd--日
    // HH--24小时制,hh--12小时制
    // mm--分
    // ss--秒

2、NSDate对象 --> 字符串
    NSDate *d1 = [NSDate date];
    NSDateFormatter *form = [NSDateFormatter new];
    form.dateFormat = @"yyyy年MM月dd日 HH时mm分ss秒"; // 时期的显示格式
    NSString *str = [form stringFromDate:d1]; // 将NSDate对象进行格式化,并转成字符串,使用NSDateFormatter对象格式化后的时间就是当前系统设置的时区的时间了。

3、NSString --> NSDate对象
    NSString *str = @"2012-12-21 17:23:12";
    NSDateFormatter *form = [NSDateFormatter new];
    form.dateFormat = @"yyyy-MM-dd HH:mm:ss"; // 必须要写这一句,字符串转NSDate对象规定以这种格式转换,如果不写,则得到的NSDate对象为null。
    NSDate *d2 = [form dateFromString:str];

4、时间运算
    NSTimeInterval t = 60*60*24;
    NSDate *tom = [NSDate dateWithTimeIntervalSinceNow:t]; // 在当前时间的基础上+24小时,即获得明天的这个时间点。
    NSDate *zuotian = [NSDate dateWithTimeIntervalSinceNow:-t]; // 在当前时间的基础上-24小时,即获得昨天的这个时间点。

    NSDate *now = [NSDate date];
    NSDate *zuotian = [now addTimeInterval:t]; // 该方法以过时。在当前时间的基础上+24小时,即获得明天的这个时间点。
    NSDate *zuotian = [now addTimeInterval:-t]; // 该方法以过时。在当前时间的基础上-24小时,即获得昨天的这个时间点。

5、NSCalendar对象:
1>获取一个NSDate对象中的年月日分别是多少
    NSDate *d = [NSDate date];
    NSCalendar *ca = [NSCalendar currentCalendar];
    NSDateComponents *cms = [ca components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:d]; // 从NSDate对象中截取年月日。
    NSLog(@"%ld-%ld-%ld",cms.year, cms.month, cms.day);


2>比较两个时间相差多少。
    NSDate *d1 = [NSDate date];
    NSDate *d2 = [NSDate date];
    // 比较的地方,年月日时分秒都比较。
    int unit =NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond;
    NSCalendar *ca = [NSCalendar currentCalendar];
    NSDateComponents *cms = [ca components:unit fromDate:d toDate:d2 options:0];
    // 从NSDate对象中截取年月日。其中option接收一个位枚举的值,当不想设置这个值并且还想用这个方法是,就设置为0,表示我不想设置该值。
    NSLog(@"相差%ld年-%ld月-%ld日-%ld时-%ld分-%ld秒",cms.year, cms.month, cms.day,cms.hour, cms.minute, cms.second);





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2