OStack程序员社区-中国程序员成长平台

标题: ios - 如何在 NSDate 中添加毫秒? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 12:39
标题: ios - 如何在 NSDate 中添加毫秒?

我有一个核心数据,我有一个名为 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-推荐答案


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 对象,我的问题是:


我真的怀疑 CoreData 是否保存 NSDate 四舍五入的值。

关于ios - 如何在 NSDate 中添加毫秒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34290353/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4