• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-13 11:06:55 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

这是我写的代码:

NSString* dt = @"Fri, 26 Jun 2015 00:00:00";
NSDateFormatter* dtFormatter = [[NSDateFormatter alloc] init];
//set the locale to spanish
[dtFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier"es"]];
[dtFormatter setDateFormat"EEE, dd MMM yyyy hh:mm:ss"];
NSDate* conDt = [dtFormatter dateFromString:dt ];
NSLog(@"%@", conDt); //This value is always (null)

即使将语言环境设置为“es”(西类牙语),它仍然无法正确解析它。如何在 iOS 中将字符串转换为日期?



Best Answer-推荐答案


设置区域设置时,您不想使用设备的区域设置,而是使用创建字符串时使用的区域设置(因为您正在使用英文字符串并希望将其转换为 NSDate 与设备的语言环境无关)。事实上,建议使用 en_US_POSIX:

[dtFormatter setLocale:[NSLocale localeWithLocaleIdentifier"en_US_POSIX"]];

Technical Q&A #1480 .这侧重于 RFC 3999/ISO 8601 日期字符串的公历问题,但它也适用于语言设置。


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

[dtFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

鉴于您的字符串的时间部分是“00:00:00”,也许这并不重要,但如果处理日期时间字符串,您通常需要确保正确捕获字符串中使用的时区,也是。

关于ios - 在西类牙语语言环境中将 NSString 转换为 NSDate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31119023/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap