iOS時間差計算

自定義了一個日期選擇器,與大家分享一下,期待寶貴建議。github下載地址:https://github.com/huahua0809/XHDatePicker
代碼片段下載地址
https://git.oschina.net/qjz.com/NSDate_Tool/tree/master
需求說明:獲取服務器返回的時間,與當前時間對比,計算出時間差,并根據(jù)時間差的長短顯示不同的形式。

工具類使用例子:

//時間屬性的get方法
-(NSString \*)create_time
{
    // 日期格式化類
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    // 設置日期格式(y:年,M:月,d:日,H:時,m:分,s:秒)
    fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    // 帖子的創(chuàng)建時間
    NSDate *create=[fmt dateFromString:_create_time];
     
    if (create.isThisYear) {//如果是今年
        NSDateComponents *cmps=[[NSDate date] deltaFrom:create];
        if (cmps.hour>=1) {//如果大于一個小時
            return [NSString stringWithFormat:@"%zd小時前",cmps.hour];
        }else if (cmps.minute>=1)//如果大于一分鐘
        {
            return [NSString stringWithFormat:@"%zd分鐘前",cmps.minute];
        }else
        {
            return @"剛剛";
        }
    }else
    {
        return _create_time;
    }  
}

NSDate相關的一些操作
-----日期轉字符串

  // 日期格式化類
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    // 設置日期格式(y:年,M:月,d:日,H:時,m:分,s:秒)
    fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    // 帖子的創(chuàng)建時間
    NSDate *create=[fmt dateFromString:_create_time];

-----字符串轉日期

//需要轉換的字符串
NSString *dateString = @"2015-06-26 08:08:08";
 //設置轉換格式
NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ;
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
//NSString轉NSDate
NSDate *date=[formatter dateFromString:dateString];

----獲取現(xiàn)在的時間是幾月幾日星期幾

    NSDate* now = [NSDate date];
    NSCalendar *cal = [NSCalendar currentCalendar];
    unsigned int unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit |NSSecondCalendarUnit;
    NSDateComponents *dd = [cal components:unitFlags fromDate:now];
    int m = [dd month];
    int d = [dd day];
    NSString *dataStr = [NSString stringWithFormat:@"%d月%d日 ",m,d];
    //日期轉換成周幾
    NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
    [outputFormatter setDateFormat:@"eeee"];
    NSString *newDateString = [outputFormatter stringFromDate:now];
    NSString *dayStr;
    if ([newDateString isEqualToString:@"Monday"]||[newDateString isEqualToString:@"星期一"])
        dayStr = @"星期一";
    else if ([newDateString isEqualToString:@"Tuesday"]||[newDateString isEqualToString:@"星期二"])
        dayStr = @"星期二";
    else if ([newDateString isEqualToString:@"Wednesday"]||[newDateString isEqualToString:@"星期三"])
        dayStr = @"星期三";
    else if ([newDateString isEqualToString:@"Thursday"]||[newDateString isEqualToString:@"星期四"])
        dayStr = @"星期四";
    else if ([newDateString isEqualToString:@"Friday"]||[newDateString isEqualToString:@"星期五"])
        dayStr = @"星期五";
    else if ([newDateString isEqualToString:@"Saturday"]||[newDateString isEqualToString:@"星期六"])
        dayStr = @"星期六";
    else if ([newDateString isEqualToString:@"Sunday"]||[newDateString isEqualToString:@"星期日"])
        dayStr = @"星期日";
    
在開發(fā)過程中如果要用到轉換時間的地方比較多,可以把代碼封裝到一個工具類中。
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容

  • 第一種://計算任意2個時間的之間的間隔 第二種: 謝謝關注作者!
    SunnyLeong閱讀 36,895評論 4 31
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,090評論 25 708
  • 稱個兩三斤春意 再加一份梅雨 送給北方的你 折下兩三支桃花 再加一滴晨露 送給北方的你 打包兩三年心事 還有一個我...
    余十三閱讀 632評論 7 12
  • 直接上代碼
    Smart_Arvin閱讀 664評論 0 0
  • mark今天,來日本出差一個月了,想家啊,跟妞在一起的時候有意思 今天去龜戶買菜,經(jīng)過地鐵路口時,剛好有地鐵路過,...
    Deanbian閱讀 150評論 2 0