我有一个核心数据,我有一个名为 time 的实体的属性,该属性是 NSDate 类型的,其中包含在商店中添加的时间。
当我尝试提取数据时,我需要按添加时间排序,并且我使用的是 NSSortDescriptor 。我的问题是当我有两个或多个相同时间的条目时:
time = "2015-12-15 12:48:08 +0000";
time = "2015-12-15 12:48:08 +0000";
time = "2015-12-15 12:48:09 +0000";
time = "2015-12-15 12:48:09 +0000";
这里的订单将丢失,因为我在 NSDate 中没有毫秒。
我该如何解决这个问题?
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey"time"
ascending:YES];
[request setSortDescriptors[sortDescriptor]];
NSError *error;
NSArray *arr =[context executeFetchRequest:request error:&error];
编辑!
声明:
@property (nonatomic, retain) NSDate * time;
初始化:
newContact.time = [NSDate date];
第二种类型的初始化是:
NSDateFormatter *dateformatter = [[NSDateFormatter alloc] init];
[dateformatter setTimeZone:[NSTimeZone timeZoneWithName"GMT"]];
[dateformatter setDateFormat"yyyy-MM-dd HH:mm:ss.SSS"];
NSString *timeString = [dateformatter stringFromDate:[NSDate date]]
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName"GMT"]];
[dateFormatter setDateFormat"yyyy-MM-dd HH:mm:ss.SSS"];
NSDate *sentTime = [dateFormatter dateFromString:timeString];
newContact.time = sentTime;
Best Answer-推荐答案 strong>
NSDate 确实包含毫秒。
Date objects are immutable, representing an invariant time interval
relative to an absolute reference date (00:00:00 UTC on 1 January
2001).
此引用日期的单位是 NSTimeInterval ,它是一个 double ,小数部分包含毫秒。
NSTimeInterval is always specified in seconds; it yields
sub-millisecond precision over a range of 10,000 years.
NSDate 是通过使用 NSTimeInterval 使用他指定的初始化器 -initWithTimeIntervalSinceReferenceDateNSTimeInterval)seconds 创建的。如果我一个接一个地调用此方法,会发生以下情况:
var interval = NSDate.timeIntervalSinceReferenceDate()
print("\(interval)")
interval = NSDate.timeIntervalSinceReferenceDate()
print("\(interval)")
// 471879256.255005
// 471879256.259943
现在,CoreData 可以直接保存 NSDate 对象,我的问题是:
- 你保存的是 NSDate 还是格式化的字符串?
- 这些日期是如何创建的?从字符串?如果它们来自字符串,您是否正确阅读它们?
- 注意,你打印的是一个字符串表示,如果你想打印真正的值,你应该问
-timeIntervalSinceReferenceDate 属性,你可以确定描述符是通过使用它来排序的.
我真的怀疑 CoreData 是否保存 NSDate 四舍五入的值。
关于ios - 如何在 NSDate 中添加毫秒?,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/34290353/
|