菜鸟教程小白 发表于 2022-12-13 11:13:16

ios - 将来自服务器的 UTC 日期存储在 NSDate 对象中


                                            <p><p>我从服务器收到的 UTC 日期为 <code>2015-10-07 17:43:11</code>。我想将此日期存储在 <code>NSDate</code> 对象中。我执行以下代码:</p>

<pre><code>NSString *dateFromServer = @&#34;2015-10-07 17:43:11&#34;;
NSDateFormatter *formatter = ;
;
NSDate *date = [ init];
date = ;
NSLog(@&#34;%@&#34;, date);
</code></pre>

<p>这给了我结果:</p>

<pre><code>2015-10-07 12:13:11 +0000
</code></pre>

<p>(我留在 GMT+05:30 区域)。如何将我的 UTC 时间(我从服务器接收到的)直接存储到 <code>NSDate</code> 对象中?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>有两种可能的解决方案:<br/><br/>
1. 让服务器发送嵌入在日期字符串中的时区:<br/></p>

<pre><code>&#34;2015-10-07 17:43:11 UTC&#34;
</code></pre>

<p>然后使用适当的日期格式对其进行解析,这将始终为您提供正确的时区。</p>

<p><br/>
2. 否则,您必须明确告诉格式化程序字符串的时区是什么,否则它将默认使用设备的当前时区。</p>

<pre><code>let dateFromServer = &#34;2015-10-07 17:43:11&#34;

let formatter = NSDateFormatter()
formatter.dateFormat = &#34;yyyy-MM-dd HH:mm:ss&#34;
formatter.timeZone = NSTimeZone(abbreviation: &#34;UTC&#34;)

if let date = formatter.dateFromString(dateFromServer) {
    print(date) // &#34;2015-10-07 17:43:11&#34;
}
</code></pre>

<p><strong>注意:</strong>
NSDate 对象没有时区 - 日期是通用的并且指示时间点。要显示带有时区的日期,您可以使用格式化程序创建一个区域敏感字符串。</p>

<p>也没有必要这样做:<br/></p>

<pre><code>NSDate *date = [ init];
</code></pre>

<p>这将创建一个具有当前时间的新日期对象。您将在下一行覆盖此值。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 将来自服务器的 UTC 日期存储在 NSDate 对象中,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/33009587/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/33009587/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 将来自服务器的 UTC 日期存储在 NSDate 对象中