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

ios - 将来自服务器的 UTC 日期存储在 NSDate 对象中

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

我从服务器收到的 UTC 日期为 2015-10-07 17:43:11。我想将此日期存储在 NSDate 对象中。我执行以下代码:

NSString *dateFromServer = @"2015-10-07 17:43:11";
NSDateFormatter *formatter = [NSDateFormatter new];
[formatter setDateFormat"yyyy-MM-dd HH:mm:ss"];
NSDate *date = [[NSDate alloc] init];
date = [formatter dateFromString:dateFromServer];
NSLog(@"%@", date);

这给了我结果:

2015-10-07 12:13:11 +0000

(我留在 GMT+05:30 区域)。如何将我的 UTC 时间(我从服务器接收到的)直接存储到 NSDate 对象中?



Best Answer-推荐答案


有两种可能的解决方案:

1. 让服务器发送嵌入在日期字符串中的时区:

"2015-10-07 17:43:11 UTC"

然后使用适当的日期格式对其进行解析,这将始终为您提供正确的时区。


2. 否则,您必须明确告诉格式化程序字符串的时区是什么,否则它将默认使用设备的当前时区。

let dateFromServer = "2015-10-07 17:43:11"

let formatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
formatter.timeZone = NSTimeZone(abbreviation: "UTC")

if let date = formatter.dateFromString(dateFromServer) {
    print(date) // "2015-10-07 17:43:11"
}

注意: NSDate 对象没有时区 - 日期是通用的并且指示时间点。要显示带有时区的日期,您可以使用格式化程序创建一个区域敏感字符串。

也没有必要这样做:

NSDate *date = [[NSDate alloc] init];

这将创建一个具有当前时间的新日期对象。您将在下一行覆盖此值。

关于ios - 将来自服务器的 UTC 日期存储在 NSDate 对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33009587/

回复

使用道具 举报

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

本版积分规则

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