2011-11-23 35 views
2

我有一個返回JSON對象的Web服務。響應由UNIX時間戳(毫秒)格式的refreshTime組成。我的UNIX時間戳轉換成NSDate的通過下面的代碼:只添加日期到核心數據的NSDate

NSDate *date = [NSDate dateWithTimeIntervalSince1970:[[timeInUNIX objectAtIndex:i]doubleValue]/1000]; 

這使我在格式

2009-11-13 19:47:49 +0000 

我只在這裏約會對象感興趣的時間。

+ (NSDate *)dateWithOutTime:(NSDate *)datDate { 
    if(datDate == nil) { 
     datDate = [NSDate date]; 
    } 
    NSDateComponents* comps = [[NSCalendar currentCalendar] components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:datDate]; 
    return [[NSCalendar currentCalendar] dateFromComponents:comps]; 
} 

這裏的問題是返回的NSDate對象仍然包含了垃圾時間:自從那天被用在NSSortDescriptor,也可以作爲在實現代碼如下節頭,因此我單獨的日期和時間用下面的代碼這一點很重要值。有什麼辦法只用NSDate格式存儲日期?

有人可以幫助我嗎?

問候, iSee的

+0

我會改變這種方法駐留在NSDate的一個類別。稱它撒謊'[指明MyDate dateWithOutTime]' – vikingosegundo

回答

3

NSDate必須有一個時間 - 這是自引用日期以來的秒數,它代表了特定的時間點。

如果你只在日/月/年部分感興趣,來處理這個正確的做法是呈現日期時,當你存儲它使用的日期格式或日期組件,而不是。或者,將日期存儲爲字符串,但這種方式會丟失任何日期功能。

2

兩個可能的解決方案,無論是不是很漂亮:

  1. 之日起乘坐NSTimeInterval,然後截斷下來到最近的60 * 60 * 24(秒*分鐘*小時)。像interval = floor(interval - interval%(60 * 60 * 24))。從中創建一個新日期。
  2. 轉換日期爲僅顯示日期的字符串,然後再轉換字符串返回到NSDate的(可能還有垃圾時間的成分,不過,但你可以墊與0值的字符串)。
+0

將其轉換爲NSString的是唯一的選擇,但我不能按照NSFetchController ... – iSee

+0

的日期爲排序日期作爲字符串字段進行排序,其存儲採用這種格式:YYYYMMDD – Esteve