分享

iOS开发 NSDate的相关属性和使用

 玄冰优 2016-03-03
NSDate
  1. NSDate对象用来表示一个具体的时间点。
  2. NSDate是一个类簇,我们所使用的NSDate对象,都是NSDate的私有子类的实体。
  3. NSDate存储的是GMT时间,使用的时候会根据 当前应用 指定的 时区 进行时间上的增减,以供计算或显示。

NSDateFormatter配合NSDate与NSString之间的转化

  NSDateFormatter有下面2个方法:
  - (NSString *)stringFromDate:(NSDate *)date;//NSDate转NSString
  - (NSDate *)dateFromString:(NSString *)string;//NSString转NSDate
===========

NSDateFormatter 的一些格式介绍
  [dateFormatter setDateFormat:@"yyyy年MM月dd日#EEEE"];//EEEE为星期几,EEE为周几
  [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; //年月日时分秒
 // HH是24进制,hh是12进制 
  [dateFormatter setDateFormat:@"yyyy年MM月d日"];//MM 为xx月,一个d可以省去01日前的0
===========

   //显示时间
    NSDateFormatter *datefor = [[NSDateFormatter alloc]init];
    [datefor setDateFormat:@"yy年 MM月 dd日"];
    NSString *str = [datefor stringFromDate:[NSDate date]];
   
    //显示时间的差值
    NSString *time =@"15年 10月 10日";
    NSString *str = @"15年 12月 12日";
   
    NSDate *date1 = [datefor dateFromString:time];
    NSDate *date2 = [datefor dateFromString:str];
   
    NSTimeInterval dtTime = [date2 timeIntervalSinceDate:date1];
    int dtDays = ((int)dtTime)/(3600*24);
    NSString *dtStr = [NSString stringWithFormat:@"第%d天",dtDays];


  // === 存在8个小时的时间差 系统时间是 格林尼治时间,与北京时间相差8个小时

    NSDate *date = [choiceDate dateFromString:str];
    NSTimeZone *zone = [NSTimeZone systemTimeZone];
    NSInteger interval = [zone secondsFromGMTForDate: date];
    NSDate *localeDate = [date  dateByAddingTimeInterval: interval];
    self.calendarDate = localeDate;

// === 或者
    NSDateFormatter *dateForm = [[NSDateFormatter alloc]init];
    dateForm.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    NSString *dateStr = [dateForm stringFromDate:[NSDate date]];
    NSLog(@"test datestr is  %@",dateStr);
   
    [dateForm setTimeZone:[NSTimeZone localTimeZone]];
    NSDate *date = [dateForm dateFromString:dateStr];

//===关于时间的比较

// date方法返回的就是当前时间(now) 
 NSDate *date = [NSDate date]; 
// now:  11:12:40 
// date: 11:12:50 
 date = [NSDate dateWithTimeIntervalSinceNow:10];//返回当前时间10秒后的时间 
 // 从1970-1-1 00:00:00开始 
 date = [NSDate dateWithTimeIntervalSince1970:10];//返回1970-1-1 00:00:00时间10秒后的时间 
 // 随机返回一个比较遥远的未来时间 
 date = [NSDate distantFuture]; 
 // 随机返回一个比较遥远的过去时间 
 date = [NSDate distantPast]; 
// 返回1970-1-1开始走过的毫秒数 
 NSTimeInterval interval = [date timeIntervalSince1970]; 
 // 跟其他时间进行对比 
 NSDate *date2 = [NSDate date]; 
 // 返回比较早的那个时间 
 [date earlierDate:date2]; 
 // 返回比较晚的那个时间 
 [date laterDate:date2]; 

//根据已有日期创建日期
 NSTimeInterval secondsPerDay1 = 24*60*60;
NSDate *now = [NSDate date];
NSDate *yesterDay = [now addTimeInterval:-secondsPerDay1];
 NSLog(@"yesterDay = %@",yesterDay);


以上都是很简单的使用,一些更加详细的与日历的组合使用参考
http://my.oschina.net/yongbin45/blog/156181

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多