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

ios - 在西类牙语语言环境中将 NSString 转换为 NSDate


                                            <p><p>我已将 RSS 提要解析器集成到 iOS 应用程序中。接收数据中的字段之一是发布日期。如果 iPhone 语言环境是美国英语,我可以解析该日期。但是当我将 iPhone 的语言更改为西类牙语时,它无法将字符串转换为 NSDate 对象。<br/></p>

<p>这是我写的代码:</p>

<pre><code>NSString* dt = @&#34;Fri, 26 Jun 2015 00:00:00&#34;;
NSDateFormatter* dtFormatter = [ init];
//set the locale to spanish
initWithLocaleIdentifier:@&#34;es&#34;]];
;
NSDate* conDt = ;
NSLog(@&#34;%@&#34;, conDt); //This value is always (null)
</code></pre>

<p>即使将语言环境设置为“es”(西类牙语),它仍然无法正确解析它。如何在 iOS 中将字符串转换为日期?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>设置区域设置时,您不想使用设备的区域设置,而是使用创建字符串时使用的区域设置(因为您正在使用英文字符串并希望将其转换为 <code> NSDate</code> 与设备的语言环境无关)。事实上,建议使用 <code>en_US_POSIX</code>:</p>

<pre><code>];
</code></pre>

<p>见 <a href="https://developer.apple.com/library/ios/qa/qa1480/_index.html" rel="noreferrer noopener nofollow">Technical Q&amp;A #1480</a> .这侧重于 RFC 3999/ISO 8601 日期字符串的公历问题,但它也适用于语言设置。</p>

<hr/>

<p>顺便说一句,我注意到您没有设置时区。通常当日期不包含任何时区信息时,它们已被转换为 GMT/UTC/Zulu。因此,您可能还想为格式化程序设置时区:</p>

<pre><code>];
</code></pre>

<p>鉴于您的字符串的时间部分是“00:00:00”,也许这并不重要,但如果处理日期时间字符串,您通常需要确保正确捕获字符串中使用的时区,也是。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 在西类牙语语言环境中将 NSString 转换为 NSDate,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/31119023/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/31119023/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 在西类牙语语言环境中将 NSString 转换为 NSDate