iOS 开发中我们经常用到获取系统时间,正常来说,我们只需要调用系统API即可

let currentDate = Date()
let formatter = DateFormatter()
// 系统设置时区
formatter.timeZone = TimeZone.current
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss,EEE"
print(formatter.string(from: currentDate))

但是这种获取方式在用户修改了时间或者修改了时区后,我们再获取的话就会有误差

如何解决呢,主要有两种方式

  • 服务器接口获取
  • 通过 URLSession 获取

第一种方式我们就不多说了,主要介绍一下第二种方法,直接上代码

let url = URL(string: "https://www.sina.com")
guard let url = url else { return  }
let request = URLRequest(url: url)let session = URLSession.shared
let task = session.dataTask(with: request) { (dataValue, response, error) in// 容错处理不做介绍了,直接获取let httpResponse: HTTPURLResponse = response as! HTTPURLResponse// 打印获取的数据,打印结果在下方print(httpResponse.allHeaderFields) let httpValue: [AnyHashable:Any] = httpResponse.allHeaderFieldslet date = httpValue["Date"] as? Stringif let dateValue = date {// 时间格式let formatter = DateFormatter()formatter.timeZone = TimeZone.init(abbreviation: "GMT")formatter.dateFormat = "EEE, dd MMM yyyy HH:mm:ss zzzz"// 为了简单直接强解了let formatterDate =  formatter.date(from: dateValue)!print("获取到的时间\(formatterDate)")// 自行处理时间,这里直接转成东八区了formatter.timeZone = TimeZone(abbreviation: "GMT+0800")formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"let cnTime = formatter.string(from: formatterDate)print("转换国内时间\(cnTime)")}
}
task.resume()

返回 response 结果如下,清除了部分无用信息

{"Cache-Control" = "max-age=120";"Content-Encoding" = gzip;"Content-Length" = 10360;"Content-Type" = "text/html";Date = "Thu, 03 Mar 2022 09:42:57 GMT";
}

通过方式二获取到的时间及系统Date()获取结果对比

修改系统时区及时间后,Date()获取:2022-03-01 02:49:20,Tue通过方式二获取到的时间:         2022-03-03 09:49:59 +0000通过方式二转换国内时间:         2022-03-03 17:49:59

iOS 获取系统时间(服务器时间)问题相关推荐

  1. python获取系统时间为字符串_python怎么获取系统当前的时间

    python获取系统当前的时间的方法:可以利用datetime.datetime.now()函数来获取.具体方法:1.导入datetime包:2.获取当前的时间,如[curr_time = datet ...

  2. oracle根据当前月份往前,oracle获取系统日期--当前时间+前一天+当前月+前一个月...

    目录 获取系统日期: SYSDATE 当前日: 前一天: 前一天转换为日期格式: 前一个月日期: 前一个月: 后一个月转换为字符串: 补充:格式化日期 获取系统日期: SYSDATE 当前日: sel ...

  3. Microsoft sql server 获取系统当前日期(时间)

    获取系统日期(时间) 1.将时间的数据类型设置为date,然后在默认值或绑定输入 (CONVERT([varchar](12),getdate(),(111))) 如图 2.sql语句 插入时用get ...

  4. 微信小程序获取系统日期和时间 —— 微信小程序教程系列(17)

    获取当前系统日期和时间 在小程序中,新建项目时,就会有一个utils.js文件,就是获取日期和时间的,代码如下: utils.js: function formatTime(date) {var ye ...

  5. python获取计算机时间_python怎么获取系统当前的时间

    python获取系统当前的时间的方法:可以利用datetime.datetime.now()函数来获取.具体方法:1.导入datetime包:2.获取当前的时间,如[curr_time = datet ...

  6. JavaScript获取系统当前日期和时间、星期几

    JavaScript获取系统当前日期和时间.星期几  方法一:  <script language="javascript">  var mydate=new Date ...

  7. IOS获取系统通讯录联系人信息

    2019独角兽企业重金招聘Python工程师标准>>> IOS获取系统通讯录联系人信息 一.权限注册 随着apple对用户隐私的越来越重视,IOS系统的权限设置也更加严格,在获取系统 ...

  8. xp系统没有服务器时间,WinXP系统时间无法同步网络时间连时区也不显示的解决方法...

    WinXP系统时间总是与网络上的北京时间自动同步的,如果某一天你突然发现系统时间不准了,甚至连时区也不显示,就说明电脑或者系统出现了问题. 通常有几下几种情况: 1.CMOS电池没电了. 2.在获取最 ...

  9. java取当前日期_java如何获取系统的当前时间

    java获取系统当前时间的方法:获取当前时间和当前时间的前30秒,代码为[simple date format df = new simple date format(" yyyy-MM-D ...

最新文章

  1. 如何将std :: string转换为const char *或char *?
  2. 一个简易的渲染循环结构
  3. 自动驾驶 2-1 第 1 课补充阅读:传感器和计算硬件 -- 下
  4. 《HTTP权威指南》读书笔记(1)-HTTP简介与消息结构
  5. excel数组和查找and引用函数
  6. winserver2012安装语言包
  7. java cropper 上传_基于cropper.js的图片上传和裁剪
  8. SQL Server DMVs in Action 学习笔记
  9. mysql查看占用内存或者CPU高的SQL
  10. Golang 同步等待组(WaitGroup)
  11. 合成 群组聊天头像,C# 版本 和 js 版本
  12. 你经历过绝望吗?两次!
  13. 两条边延长角会有什么变化_用图中这种测量工具可以量出图中零件上ab cd这两条轮廓线的延长线所成的角你能说出其中的道理吗...
  14. c语言文件资源,C语言文件操作
  15. 数据结构之哈希表以及常用哈希的算法表达(含全部代码)
  16. 专业C/C++程序员的培养路线
  17. 谁说游戏是程序员写的?
  18. Improving alignment of dialogue agents via targeted human judgements翻译
  19. 智慧交通大数据可视化
  20. MySQL高级—尚硅谷—周阳—2018-03-28

热门文章

  1. 二套模板的小说网站源码 带采集功能
  2. 西门子828d车削编程技术_SINUMERIK 828D基本编程指令 .ppt
  3. CPT302多代理人系统 个人笔记
  4. 10-java实现对上传文件做安全性检查
  5. OFD转换器怎么使用?教你几个OFD格式怎么转PDF的方法
  6. 如何设置Hi提醒让关注的直播开播时收到微信提醒通知
  7. 单片机_stc单片机eeprom 学习笔记
  8. 注意:微博、优酷等“霸道”App正在强行获取您的隐私!
  9. 如何实现健康饮食,摆脱不良习惯?追随营养专家的规律饮食指南,助你轻松开启健康美食之旅!
  10. Excel巧使2个字和3个字的名字对齐显示