大佬教程收集整理的这篇文章主要介绍了ios – 在Swift中将日期从GMT 1转换为UTC时出现混乱,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
第一个日期是GMT 1,我想转换为UTC.如果我没弄错GMT 0 == UTC所以12:00应该是11:00对吗?但我总是得到10点.为什么会这样,我该如何正确转换它?
我在操场上和实际设备上都试过这个
这是我使用的代码:
class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view,typically from a nib. let dateString:string = "2016-06-23 12:00:00" print("1: "+dateString) print("2: "+convertDateToUTC(dateString)) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func convertDateToUTC(_ dateString:string) -> String { let dateForm = DateFormatter() dateForm.dateFormat = "yyyy-MM-dd HH:mm:ss" dateForm.timeZone = TimeZone(abbreviation: "GMT+1") print(TimeZone.current.abbreviation()!) let date = dateForm.date(from: dateString) dateForm.timeZone = TimeZone(abbreviation: "UTC") let date1 = dateForm.String(from: date!) return date1 } }
输出:
1: 2016-06-23 12:00:00 GMT+1 2: 2016-06-23 10:00:00
“GMT 1”不是有效的时区缩写:
let tz = TimeZone(abbreviation: "GMT+1") print(tz) // nil
因此,在
dateForm.timeZone = TimeZone(abbreviation: "GMT+1")
你将dateForm.timeZone设置为nil,这意味着日期
String在您的默认(本地)时区中解释.
同
dateForm.timeZone = TimeZone(abbreviation: "GMT+01")
你会得到预期的结果.或者,创建时区
从(数字)GMT偏移量或其标识符:
dateForm.timeZone = TimeZone(secondsFromGMT: 3600) dateForm.timeZone = TimeZone(identifier: "GMT+0100")
附录(回应您的意见):
TimeZone(identifier: "GMT+0100") TimeZone(identifier: "Europe/Berlin")
是不同的时区.第一个使用固定的GMT偏移量为1小时,第二个是区域中的时区(在本例中为德国),并且与UTC相差一到两个小时,具体取决于是否夏令时在指定日期有效.
以上是大佬教程为你收集整理的ios – 在Swift中将日期从GMT 1转换为UTC时出现混乱全部内容,希望文章能够帮你解决ios – 在Swift中将日期从GMT 1转换为UTC时出现混乱所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。