2011-11-23 33 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