菜鸟教程小白 发表于 2022-12-13 05:55:21

ios - 将 ISO8601 日期格式转换为本地时间 (iOS)


                                            <p><p>所以有一个关于网络应用程序的部分,用户可以在其中输入事件,网络服务以以下格式将这些事件发送到移动应用程序:</p>

<pre><code>&#34;yyyy-MM-dd&#39;T&#39;HH:mm:ssZZZZZ&#34;
</code></pre>

<p>我在尝试将字符串转换为日期时遇到问题,因此我可以从事件中获取时间(也以正确的时区格式化),例如,这里是“2015-03-20T20” :00:00-07:00",我拉的时间应该是太平洋时间下午 1 点。但相反,我要么得到 8PM 或 3AM(取决于我是否将 UTC 缩写添加到日期格式化程序)。</p>

<p>这是我到目前为止所拥有的,我知道我在这里遗漏了一些东西,也许还有另一个需要使用的日期格式化程序,但到目前为止我无法弄清楚我哪里出错了。 </p>

<pre><code>NSString *datePattern = @&#34;yyyy-MM-dd&#39;T&#39;HH:mm:ssZZZZZ&#34;;
NSDateFormatter *dateFormatter = ;
;
NSString *sString = ;
NSDate *startDate = ;
NSDateFormatter *timeFormatter = ;
;
];
NSString *timeString = ;
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p><code>2015-03-20T20:00:00-07:00</code> <em>是</em>太平洋夏令时间晚上 8 点。 </p>

<p>如果您代表太平洋夏令时间下午 1 点,则可以</p>

<ul>
<li><code>2015-03-20T13:00:00-07:00</code></li>
</ul>

<p>或用“Zulu”表示(即 GMT/UTC)</p>

<ul>
<li><code>2015-03-20T20:00:00Z</code></li>
</ul>

<p>使用 Web 服务时,后者是 ISO 8601 日期的通用约定。然后,当您将其呈现给用户时,您会在他们的本地时区将其呈现给他们(使用具有默认 <code>timeZone</code> 设置的 <code>NSDateFormatter</code>。</p>

<hr/>

<p>注意,当使用 <code>NSDateFormatter</code> 准备 ISO 8601 日期时,您需要确保指定 <code>en_US_POSIX</code> 的 <code>locale</code>,如<a href="https://developer.apple.com/library/ios/qa/qa1480/_index.html" rel="noreferrer noopener nofollow">Technical Q&amp;A QA1480</a> .在为美国受众设计应用程序时,这并不重要,但如果用户未在其设备上使用公历,这是最佳做法。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 将 ISO8601 日期格式转换为本地时间 (iOS),我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/29091324/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/29091324/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 将 ISO8601 日期格式转换为本地时间 (iOS)