菜鸟教程小白 发表于 2022-12-13 12:39:09

ios - 如何在 NSDate 中添加毫秒?


                                            <p><p>我有一个核心数据,我有一个名为 <code>time</code> 的实体的属性,该属性是 <code>NSDate</code> 类型的,其中包含在商店中添加的时间。</p>

<p>当我尝试提取数据时,我需要按添加时间排序,并且我使用的是 <code>NSSortDescriptor</code>。我的问题是当我有两个或多个相同时间的条目时:</p>

<pre><code>time = &#34;2015-12-15 12:48:08 +0000&#34;;
time = &#34;2015-12-15 12:48:08 +0000&#34;;
time = &#34;2015-12-15 12:48:09 +0000&#34;;
time = &#34;2015-12-15 12:48:09 +0000&#34;;
</code></pre>

<p>这里的订单将丢失,因为我在 <code>NSDate</code> 中没有毫秒。 </p>

<p>我该如何解决这个问题?</p>

<pre><code>NSSortDescriptor *sortDescriptor = [ initWithKey:@&#34;time&#34;
                                                               ascending:YES];

];
NSError *error;

NSArray *arr =;
</code></pre>

<p>编辑!
声明:</p>

<pre><code>@property (nonatomic, retain) NSDate * time;
</code></pre>

<p>初始化:</p>

<pre><code>newContact.time = ;
</code></pre>

<p>第二种类型的初始化是:</p>

<pre><code>NSDateFormatter *dateformatter = [ init];
];
;
NSString *timeString = ]   

NSDateFormatter *dateFormatter = [ init];
];
;

NSDate *sentTime = ;
newContact.time = sentTime;
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>NSDate 确实包含毫秒。<br/></p>

<blockquote>
<p>Date objects are immutable, representing an invariant time interval
relative to an absolute reference date (00:00:00 UTC on 1 January
2001).</p>
</blockquote>

<p>此引用日期的单位是 <code>NSTimeInterval</code>,它是一个 <code>double</code>,小数部分包含毫秒。</p>

<blockquote>
<p>NSTimeInterval is always specified in seconds; it yields
sub-millisecond precision over a range of 10,000 years.</p>
</blockquote>

<p>NSDate 是通过使用 NSTimeInterval 使用他指定的初始化器 <code>-initWithTimeIntervalSinceReferenceDate:(NSTimeInterval)seconds</code> 创建的。如果我一个接一个地调用此方法,会发生以下情况:</p>

<pre><code>      var interval = NSDate.timeIntervalSinceReferenceDate()
      print(&#34;\(interval)&#34;)
      interval = NSDate.timeIntervalSinceReferenceDate()
      print(&#34;\(interval)&#34;)

//      471879256.255005
//      471879256.259943
</code></pre>

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

<ul>
<li>你保存的是 NSDate 还是格式化的字符串?</li>
<li>这些日期是如何创建的?从字符串?如果它们来自字符串,您是否正确阅读它们?</li>
<li>注意,你打印的是一个字符串表示,如果你想打印真正的值,你应该问 <code>-timeIntervalSinceReferenceDate</code> 属性,你可以确定描述符是通过使用它来排序的. </li>
</ul>

<p><br/>
我真的怀疑 CoreData 是否保存 NSDate 四舍五入的值。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何在 NSDate 中添加毫秒?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/34290353/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/34290353/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何在 NSDate 中添加毫秒?