iOS獲取當天0點


  最近一個公司一個項目里有個坑,顯示不了0點的數據,修改起始時間為前一天23點59分59秒則可以顯示。

  查看了獲取當天0點代碼,和網上查到的結果基本一致,如下所示(使用Category On NSDate):

1 - (NSDate *)zeroOfDate
2 {
3     NSCalendar *calendar = [NSCalendar currentCalendar];
4     NSDateComponents *components = [calendar components:NSUIntegerMax fromDate:self];
5     components.hour = 0;
6     components.minute = 0;
7     components.second = 0;
8     return [calendar dateFromComponents:components];
9 }

  加上Log發現return的date NSTimeInterval的小數點后的值不為0,因為nanosecond不為0,而iOS里又不能使用components.nanosecond = 0,於是用以下辦法解決:

 1 - (NSDate *)zeroOfDate
 2 {
 3     NSCalendar *calendar = [NSCalendar currentCalendar];
 4     NSDateComponents *components = [calendar components:NSUIntegerMax fromDate:self];
 5     components.hour = 0;
 6     components.minute = 0;
 7     components.second = 0;
 8     
 9     // components.nanosecond = 0 not available in iOS
10     NSTimeInterval ts = (double)(int)[[calendar dateFromComponents:components] timeIntervalSince1970];
11     return [NSDate dateWithTimeIntervalSince1970:ts];
12 }

  做個標記,以防以后被坑。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM