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

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

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

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

"yyyy-MM-dd'T'HH:mm:ssZZZZZ"

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

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

NSString *datePattern = @"yyyy-MM-dd'T'HH:mm:ssZZZZZ";
NSDateFormatter *dateFormatter = [NSDateFormatter new];
[dateFormatter setDateFormat:datePattern];
NSString *sString = [valueDict valueForKey"start_date"];
NSDate *startDate = [dateFormatter dateFromString:sString];
NSDateFormatter *timeFormatter = [NSDateFormatter new];
[timeFormatter setDateFormat"hh:mm a"];
[timeFormatter setLocale:[NSLocale systemLocale]];
NSString *timeString = [timeFormatter stringFromDate:startDate];



Best Answer-推荐答案


2015-03-20T20:00:00-07:00 太平洋夏令时间晚上 8 点。

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

  • 2015-03-20T13:00:00-07:00

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

  • 2015-03-20T20:00:00Z

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


注意,当使用 NSDateFormatter 准备 ISO 8601 日期时,您需要确保指定 en_US_POSIXlocale,如Technical Q&A QA1480 .在为美国受众设计应用程序时,这并不重要,但如果用户未在其设备上使用公历,这是最佳做法。

关于ios - 将 ISO8601 日期格式转换为本地时间 (iOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29091324/

回复

使用道具 举报

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

本版积分规则

关注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