NSDate實用總結

  • 將當前對時間顯示出來
    NSDate -> NSSTring
    NSDate *date = [NSDate date];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy/MM/dd hh:mm:ss"];
    self.timeLabel.text = [dateFormatter stringFromDate:date];
    NSSTring -> NSDate
    NSString *dateString = self.timeLabel.text;
    NSDate *nowDate = [dateFormatter dateFromString:dateString];
    self.timeLabel2.text = [dateFormatter stringFromDate:nowDate];

  • 分別獲取指定日期的年、月、日、時、分、秒
    [dateFormatter setDateFormat:@"yyyy/MM/dd HH:mm:ss"];
    NSString *dateString = @"2016/10/12 3:2:34";
    NSDate *theDate = [dateFormatter dateFromString:dateString];
    NSDateComponents *com = [[NSCalendar currentCalendar] components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond fromDate:theDate];
    NSInteger year = com.year;
    NSInteger month = com.month;
    NSInteger day = com.day;
    NSInteger hour = com.hour;
    NSInteger minute = com.minute;
    NSInteger second = com.second;
    self.timeLabel2.text = [NSString stringWithFormat:@"%ld年%ld月%ld日 %02ld時:%02ld分:%02ld秒, year, month, day, hour, minute, second];
    上面的代碼寫法比較快,但是不夠清楚,下面換種寫法,感覺你就是大牛有木有
    NSString *dateString = @"2015/09/06 3:2:34";
    NSDate *theDate = [dateFormatter dateFromString:dateString];
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSUInteger unitFlags = NSCalendarUnitYear| NSCalendarUnitMonth | NSCalendarUnitDay |NSCalendarUnitHour |NSCalendarUnitMinute |NSCalendarUnitSecond;
    NSDateComponents *cmp1 = [calendar components:unitFlags fromDate:theDate];
    NSDateComponents *cmp2 = [calendar components:unitFlags fromDate:[NSDate date]];

      // 2.格式化日期
      NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
      if ([cmp1 day] == [cmp2 day]) { // 今天
          formatter.dateFormat = @"今天 HH:mm";
      } else if ([cmp1 year] == [cmp2 year]) { // 今年
          formatter.dateFormat = @"MM-dd HH:mm";
       } else {
          formatter.dateFormat = @"yyyy-MM-dd HH:mm";
      }
      NSString *time = [formatter stringFromDate:theDate];
      
      // 3.顯示時間
      self.timeLabel2.text = time;
    

注意,通過改變NSDateFormatter的dateFormat表現形式可以實現各種你想要的時間表示形式,比如
NSString *dateString = @"2015/09/08 3:2:34";
NSDate *theDate = [dateFormatter dateFromString:dateString];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"'日期:'yyyy有鬼MM??dd'時間:'HH好玩嗎mm??ss";
self.timeLabel2.text = [formatter stringFromDate:theDate];
另外提到的一點是:要獲取那一天是星期幾的話把CalendarUnitWeekday加入就好了。

  • 獲取指定日期的月份有多少天
    NSString *dateString = @"2015/10/08 3:2:34";
    NSDate *theDate = [dateFormatter dateFromString:dateString];
    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    NSRange MonthRange = [gregorian rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:theDate];
    NSInteger sumDays = MonthRange.length;
    self.timeLabel2.text = [NSString stringWithFormat:@"%ld天", sumDays];
    獲取到了一個月份有多少天后,自然就可以想到下一個功能就是準確地從指定日期月份得到指定月份的下一個月份的第一天,這個功能常被用于日歷的生成
    NSString *dateString = @"2015/10/08 3:2:34";
    NSDate *theDate = [dateFormatter dateFromString:dateString];
    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    NSRange MonthRange = [gregorian rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:theDate];
    NSInteger sumDays = MonthRange.length;
    NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay fromDate:theDate];
    NSInteger day = components.day;
    NSDate *firstDate = [theDate dateByAddingTimeInterval:60 * 60 * 24 * (sumDays - day + 1)];
    self.timeLabel2.text = [dateFormatter stringFromDate:firstDate];

  • 從1970神馬的
    前端總是少不了要和后臺進行交互,然后后臺給我們日期的方式總是一個什么從1970年到那個日期的毫秒數(ps:誰能告訴我為什么是1970年)然后我們就不得不把它們轉過來轉過去了
    NSDate -> NSTimeInterval
    NSString *dateString = @"2015/10/08 3:2:34";
    NSDate *theDate = [dateFormatter dateFromString:dateString];
    NSTimeInterval timeInter = [theDate timeIntervalSince1970] * 1000;
    self.timeLabel2.text = [NSString stringWithFormat:@"1970年到%@的毫秒數為:%.2f", dateString, timeInter];

    NSTimeInterval -> NSDate
    NSString *dateString = @"2015/10/08 3:2:34";
    NSDate *theDate = [dateFormatter dateFromString:dateString];
    NSTimeInterval timeInter = [theDate timeIntervalSince1970] * 1000;
    NSDate *sameDate = [NSDate dateWithTimeIntervalSince1970:timeInter/1000];
    self.timeLabel2.text = [dateFormatter stringFromDate:sameDate];

  • 格式化輸出 年月日 上下午 時分秒 星期幾
    顯示效果如下:



    代碼如下:
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    formatter.dateFormat = @"yyyy/MM/dd HH??mm??ss";
    NSString *dateString = @"2015/09/08 3:2:34";
    NSDate *theDate = [formatter dateFromString:dateString];

      formatter.dateFormat = @"MM月dd日 a HH:mm EEEE";
      UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20, 100, 300, 50)];
      label.text = [formatter stringFromDate:theDate]; 
      [self.view addSubview:label];
    
  • 判斷某一天是不是昨天、今天、明天、周末等
    代碼如下:
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    formatter.dateFormat = @"yyyy/MM/dd HH:mm:ss";
    NSString *dateString = @"2015/09/20 3:2:34";
    NSDate *theDate = [formatter dateFromString:dateString];
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20, 100, 300, 50)];
    label.text = [formatter stringFromDate:theDate];
    [self.view addSubview:label];

      NSCalendar *calendar = [NSCalendar currentCalendar];
      BOOL isToday     = [calendar isDateInToday:theDate];
      BOOL isYesterday = [calendar isDateInYesterday:theDate];
      BOOL isTomorrow  = [calendar isDateInTomorrow:theDate];
      BOOL isInWeek    = [calendar isDateInWeekend:theDate];
      
      NSString *labelString = @"";
      if (isInWeek) {
          labelString = @"周末";
      }
      
      if (isYesterday) {
          labelString = @"昨天";
      }
      
      if (isTomorrow) {
          labelString = @"明天";
      }
      
      if (isToday) {
          labelString = @"今天";
      }
      
      label.text = labelString;
    
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容