菜鸟教程小白 发表于 2022-12-12 15:48:52

ios - 从像 '+-hh:mm' 这样的字符串中提取 NSTimeZone


                                            <p><p>在我的应用程序中,我从 <code>API</code> 下载一些数据为 <code>JSON</code>,其中包含本地时间条目:</p>

<pre><code>&#34;local_date&#34; : &#34;2015-07-08T13:18:14+02:00&#34;
</code></pre>

<p>将JSON数据解析成<code>NSDictionary*信息</code>:</p>

<pre><code>NSDateFormatter* dateFormatter= ;
dateFormatter.timeZone = ;
dateFormatter.dateFormat = @&#34;yyyy-MM-dd&#39;T&#39;HH:mm:ssZ&#34;;
NSDate *date = ];
</code></pre>

<p><code>date</code> 现在已正确设置为 UTC(我需要进行一些计算),但要在用户界面中显示本地数据,我需要在正确的时区显示日期。</p>

<p>我的问题是:
如何从我的字符串中提取 <code>NSTimeZone</code> ?我正在寻找类似 <code>NSTimeZone* timeZone = ;</code></p>

<p>我已经阅读了 NSDateFormatter、NSCalendar 和 NSTimeZone 的文档,但没有找到如何从像我这样的字符串中获取时区。</p>

<p>提前致谢!</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>再次:当您说“本地时间”时,您的意思是返回字符串的本地时间,而不是用户的本地时间?所以我从德国收到了一个日期,我有足够的信息把它变成一个 NSDate <em>和</em>,这样我就可以创建一个 <code>NSDateFormatter</code> 来准确地重新创建原始字符串是我想要的输出?</p>

<p>首先:时区实际上不在您提供的字符串中。它说 +02:00 告诉您与 GMT 的偏移量。它不会告诉你时区。例如。现在 +02:00 的偏移量可能是 SAST,南非时区,可能是 EET,东欧时区,可能是 CAT,中非时区等。因此没有直接的方法从偏移量映射到区域。</p>

<p>假设您只想保留偏移量以便以后应用它,luk2302 的建议可能是正确的方向,但我会采取相反的方式(我也会注意 <a href="https://developer.apple.com/library/ios/qa/qa1480/_index.html" rel="noreferrer noopener nofollow">QA1480</a> ):</p>

<pre><code>NSString *time = @&#34;2015-07-08T13:18:14+02:00&#34;; // or whatever

NSDateFormatter *dateFormatter= ;
dateFormatter.locale = ;

dateFormatter.dateFormat = @&#34;yyyy-MM-dd&#39;T&#39;HH:mm:ssZ&#34;;
NSDate *correctDate = ;

NSDate *dateWithoutOffset = correctDate;
NSRange rangeOfPlus = ;
if(rangeOfPlus.location != NSNotFound)
{
    dateFormatter.timeZone = ;
    dateFormatter.dateFormat = @&#34;yyyy-MM-dd&#39;T&#39;HH:mm:ss&#34;;
    dateWithoutOffset = ];   
}

NSLog(@&#34;Offset in date was %0.0f seconds&#34;, );
</code></pre>

<p>因为你在做一些迟钝和不寻常的事情——普通的应用程序只处理固定的日期格式字符串,没有时区的日期(如在 <code>NSDate</code>s 中),并在 <strong >用户的</strong>本地时间 - 您可能需要手动存储和处理偏移量。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 从像&#39;&#43;-hh:mm&#39; 这样的字符串中提取 NSTimeZone,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/31291391/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/31291391/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 从像 &#39;&#43;-hh:mm&#39; 这样的字符串中提取 NSTimeZone