如何在NSDate中添加毫秒数?

问题描述 投票:2回答:1

我有一个核心数据,我有一个名为timeNSDate类型的实体属性,其中包含在商店中添加的时间。

当我试图提取数据时,我需要通过增加时间来订购,我使用的是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";

这里的顺序将丢失,因为我在qazxsw poi中没有毫秒。

我该如何解决这个问题?

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];
ios objective-c nsdate nssortdescriptor
1个回答
1
投票

NSDate确实包含毫秒。

日期对象是不可变的,表示相对于绝对参考日期(2001年1月1日00:00:00 UTC)的不变时间间隔。

此参考日期的单位是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; ,它是一个NSTimeInterval,小数部分包含毫秒数。

NSTimeInterval始终以秒为单位指定;它在10,000年的范围内产生亚毫秒精度。

NSDate是使用NSTimeInterval使用他指定的初始化程序double创建的。如果我一个接一个地调用这个方法,会发生以下情况:

-initWithTimeIntervalSinceReferenceDate:(NSTimeInterval)seconds

现在,CoreData可以直接保存NSDate对象,我的问题是:

  • 你保存NSDate或格式化的字符串?
  • 这些日期是如何创建的?从字符串?如果他们来自字符串你是否正确阅读?
  • 注意你正在打印的是一个字符串表示,如果你想打印真正的值,你应该问 var interval = NSDate.timeIntervalSinceReferenceDate() print("\(interval)") interval = NSDate.timeIntervalSinceReferenceDate() print("\(interval)") // 471879256.255005 // 471879256.259943 属性,你可以确定描述符是使用它进行排序。

我真的怀疑Core Data保存NSDate四舍五入的值。

© www.soinside.com 2019 - 2024. All rights reserved.