Ios 如何在NSDate中添加毫秒?
我有一个核心数据,我的实体有一个名为Ios 如何在NSDate中添加毫秒?,ios,objective-c,nsdate,nssortdescriptor,Ios,Objective C,Nsdate,Nssortdescriptor,我有一个核心数据,我的实体有一个名为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
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;
NSDate不包含毫秒。
日期对象是不可变的,表示不变的时间间隔 相对于绝对参考日期(1月1日00:00:00 UTC) 2001年) 此参考日期的单位为
NSTimeInterval
,该单位为双精度
,小数部分包含毫秒
NSTimeInterval始终以秒为单位指定;它产生
超过10000年的亚毫秒精度
NSDate是通过使用指定的初始值设定项NSTIMEIVAL创建的。-initWithTimeIntervalSinceReferenceDate:(NSTIMEIVAL)seconds
。如果我一个接一个地调用此方法,会发生以下情况:
var interval = NSDate.timeIntervalSinceReferenceDate()
print("\(interval)")
interval = NSDate.timeIntervalSinceReferenceDate()
print("\(interval)")
// 471879256.255005
// 471879256.259943
现在,CoreData可以直接保存NSDate对象,我的问题是:
- 您正在保存NSDate还是格式化的字符串
- 这些日期是如何创建的?从字符串?如果它们来自字符串,您是否正确读取它们
- 请注意,您正在打印的是字符串表示法,如果要打印实际值,应询问
属性,并确保描述符正在使用它进行排序李>-timeIntervalSinceReferenceDate
我真的怀疑CoreData是否能保存NSDate,将值四舍五入。您能告诉我们如何在
NSDate
中添加年、月、日、小时、分和秒吗?假设原始输入具有该分辨率,则NSDate
包含毫秒。time
真的是一个NSDate
还是一个NSString
?我在创建sentTime后立即对您的问题进行了编辑,并将其写入并检查是否有十进制值NSLog(@“Interval%lf”,sentTime.timeIntervalSinceReferenceDate);如果日期格式没有错误,或者您试图在NSDate中转换的字符串没有暴露毫秒间隔471881576.851000,那么?正如您所看到的,它确实包含毫秒,一切似乎都是正确的,可能问题出在其他地方。要检查分拣机是否正确分拣,我将打印timeintervalsincerefdate而不是日期描述。您可以看到NSSortDescriptor是如何创建的。你知道哪里会出问题吗?