菜鸟教程小白 发表于 2022-12-13 06:01:50

ios - iOS 上的 DST 独立时间


                                            <p><p>这是场景:</p>

<ol>
<li>我的应用正在运行,它调用一些函数来获取当前时间并将该时间写入持久性数据库(即磁盘上)</li>
<li>我强行终止我的应用并关闭我的 iPhone</li>
<li>夏令时来了又去,我已经飞过半个地球,越过了国际日期变更线。</li>
<li>我打开我的 iPhone 并运行我的应用程序</li>
<li>我的应用读取数据库中的时间,调用一个函数来获取当前时间,并以秒/毫秒/等为单位计算真正耗时。考虑时区、日期线和 DST 变化。</li>
</ol>

<p>在使用 C/Objective-C 的 iOS 上,我需要调用哪些函数来获取允许我计算真正耗时的当前时间?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>对于第 1 步,您可以这样做:</p>

<pre><code>NSDate *currentTime = ;
</code></pre>

<p>或者,如果您不想要一个对象并且想要一个 <code>double</code> 值,您可以这样做:</p>

<pre><code>NSTimeInterval currentTimestamp = ;
</code></pre>

<p>然后,在第 5 步中,您<em>再次执行完全相同的操作</em>:</p>

<pre><code>NSTimeInterval timeInTheDatabase = ...
NSTimeInterval currentTimestamp = ;
</code></pre>

<p>那么真正耗时是这样的:</p>

<pre><code>NSTimeInterval elapsedTime = currentTimestamp - timeInTheDatabase.
</code></pre>

<p>这将为您提供第一次和第二次之间的秒数。</p>

<p>为什么会这样?</p>

<p>之所以有效,是因为 <code>NSDates</code> 是 <em>always</em> 在 GMT 中。在通过 <code>NSDateFormatter</code> 格式化显示之前,不会发生到您的时区的“转换”。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - iOS 上的 DST 独立时间,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/21345554/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/21345554/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - iOS 上的 DST 独立时间