NSDate 簡單運用和時間處理

前言:總結了學習中遇到的幾種NSDate和NSString比較的情況
pragma mark -- 01 時間字符串轉NSDate / NSDate 轉 NSString
#date轉NSString
-(void) date2string
{
    //獲得手機當前時間    
    NSDate *date = [NSDate date];
//時間轉碼
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"yyyy年MM月dd號 HH:mm:ss";
    
 NSString *string = [fmt stringFromDate:date];
     NSLog(@"----%@+++++", string);
 }
#NSString轉date
-(void) string2date
{
    // 時間字符串
    NSString *string = @"2016-07-13 09:33:22";
// 日期格式化類
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    // 設置日期格式(為了轉換成功)
    fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
  // NSString * -> NSDate *
    NSDate *date = [fmt dateFromString:string];
     NSString *newStr = [fmt stringFromDate:date];
    NSLog(@"%@", date);
    NSLog(@"%@", newStr);
}
pragma mark -- 02 時間字符串轉為NSDate,并獲得和當前時間的時間差(單位秒)
//寫成一個方法了,要運行直接調用就好
-(void)dateCompare1
{
    // 時間字符串(自己寫的時間)
    NSString *createdAtString = @"2016-07-13 15:28:00";
//時間轉碼    
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
//時間轉碼格式  
 //時間樣式
 // yyyy 年 MM 月 dd 日 HH 24小時  hh 12小時 mm 分鐘 ss 秒鐘  Z 時區 
fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
//將字符串時間按當前轉碼方式轉換為NSDate類型   
 NSDate *createdAtDate = [fmt dateFromString:createdAtString];
  
//轉換后的時間和當前手機時間做比較(兩種方法)  
    // 手機當前時間
    //    NSDate *nowDate = [NSDate date];
    // 獲得createdAtDate和nowDate的時間間隔(間隔多少秒)
    //    NSTimeInterval interval = [nowDate timeIntervalSinceDate:createdAtDate];
//第二種方法:直接調用蘋果封裝的方法    
NSTimeInterval interval = [createdAtDate timeIntervalSinceNow];
   //打印出來的是兩者間隔的秒數 
    NSLog(@"%f", interval);
}


pragma mark -- 03 兩個時間字符串的比較,比較的屬性有(年月日時分秒)
-(void)dateCompare2
{
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    
    // 時間字符串1
    NSString *createdAtString = @"2016-07-01 09:10:05";
    NSDate *createdAtDate = [fmt dateFromString:createdAtString];
    
    // 時間字符串2
    NSString *otherString = @"2016-07-13 08:56:45";
    NSDate *otherDate = [fmt dateFromString:otherString];
    
    // 獲得NSCalendar(日歷類)
    NSCalendar *calendar = nil;
     if ([NSCalendar respondsToSelector:@selector(calendarWithIdentifier:)]) {
        calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];
    } else {
        calendar = [NSCalendar currentCalendar];
  }
 // 獲得日期之間的間隔
    NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
    NSDateComponents *cmps = [calendar components:unit fromDate:createdAtDate toDate:otherDate options:0];
//這個打印值是一個枚舉值      
 NSLog(@"%@", cmps);
#打印結果
 Calendar 
     Year: 0   //年相差為0
    Month: 0  //月相差為0 
    Day: 11 
    Hour: 23
    Minute: 46
    Second: 40
}

pragma mark -- 04 判斷時間字符串和當前手機時間的大小
-(void)dateCompare
{
    // 時間字符串
    NSString *createdAtString = @"2016-07-13 15:56:05";
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    NSDate *createdAtDate = [fmt dateFromString:createdAtString];
    
    // 手機當前時間
    NSDate *nowDate = [NSDate date];
    /**
     NSComparisonResult的取值
     NSOrderedAscending = -1L, // 升序, 越往右邊越大
     NSOrderedSame,  // 相等
     NSOrderedDescending // 降序, 越往右邊越小
     */
    // 獲得比較結果(誰大誰小)
    NSComparisonResult result = [nowDate compare:createdAtDate];
    if (result == NSOrderedAscending) { // 升序, 越往右邊越大
        NSLog(@"createdAtDate > nowDate");
    } else if (result == NSOrderedDescending) { // 降序, 越往右邊越小
        NSLog(@"createdAtDate < nowDate");
    } else {//兩者相等
        NSLog(@"createdAtDate == nowDate");
    }
}

pragma mark -- 05 獲取日期元素
/**
 *  日期元素 : 年月日時分秒
 */
-(void) getComponentsOfDate
{
    // 時間字符串
    NSString *string = @"2016-07-13 09:10:05";

    // 日期格式化類
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    // 設置日期格式(為了轉換成功)
    fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
// NSString * -> NSDate *
    NSDate *date = [fmt dateFromString:string];

    // 利用NSCalendar處理日期
//初始化    
NSCalendar *calendar = [NSCalendar currentCalendar];
//獲取日期元素的方法   
 NSInteger month = [calendar component:NSCalendarUnitMonth fromDate:date];
  NSInteger hour = [calendar component:NSCalendarUnitHour fromDate:date];
 NSInteger minute = [calendar component:NSCalendarUnitMinute fromDate:date];
 NSLog(@"%zd %zd %zd", month, hour, minute);
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • iOS開發中,經常會遇到各種各樣的時間問題,8小時時差,時間戳,求時間間隔,農歷等等。解決辦法網上比比皆是,但大多...
    小李龍彪閱讀 6,429評論 1 6
  • 在iOS開發中,經常會遇到各種各樣的時間問題,8小時時差,時間戳,求時間間隔,農歷等等。解決辦法網上比比皆是,但大...
    真巧了_嘿閱讀 2,813評論 0 7
  • 1.0-基礎部分 pragma mark:輸出常量和變量 你可以用print(_:separator:termin...
    037e3257fa3b閱讀 934評論 2 7
  • /**ios常見的幾種加密方法: 普通的加密方法是講密碼進行加密后保存到用戶偏好設置( [NSUserDefaul...
    彬至睢陽閱讀 3,005評論 0 7
  • 故鄉,山川綿延,喋喋不休。 鄉間小路,蜿蜒如龍,無盡頭! 兒時,田野山間,遍布腳印。 看辛勞人們,早出晚...
    唯唯_c1fc閱讀 343評論 2 5