iOS 忽略時分秒計算時間差

一:常規(guī)方法

- (NSInteger)daysFromDate:(NSDate *)startDate toDate:(NSDate *)endDate{
    NSLog(@"start:%@", startDate);
    NSLog(@"end:%@", endDate);
    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
 
    unsigned int unitFlags = NSDayCalendarUnit;
    NSDateComponents *comps = [gregorian components:unitFlags fromDate:startDate  toDate:endDate  options:0];
    return [comps day];
}

常規(guī)方法計算時間差,會被2個時間的時分秒所影響,打印時間如下
start:2014-01-19 04:15:22 +0000
end:2014-01-20 04:15:22 +0000
這樣有可能會計算為0天。

二:強制計算方法

- (NSInteger)daysFromDate:(NSDate *)startDate toDate:(NSDate *)endDate{
    NSDateFormatter *temp = [[NSDateFormatter alloc] init];
    NSDate *stDt = [temp dateFromString:[temp stringFromDate:startDate]];
    NSDate *endDt =  [temp dateFromString:[temp stringFromDate:endDate]];
    
    NSTimeZone *zone = [NSTimeZone systemTimeZone];
    NSInteger interval = [zone secondsFromGMTForDate:stDt];
    stDt = [stDt dateByAddingTimeInterval: interval];
 
    interval = [zone secondsFromGMTForDate:endDt];
    endDt = [endDt dateByAddingTimeInterval:interval];
    
    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

    unsigned int unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit;
    NSDateComponents *comps = [gregorian components:unitFlags fromDate:stDt  toDate:endDt  options:0];
    
    return [comps day];
}
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容