从字符串到 swift returns 中的日期的转换 nil
Conversion from string to date in swift returns nil
我在 swift 3 中将字符串转换为日期时遇到问题。这是我的代码,它 returns 我在转换时为零值。
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEE, dd MMM yyyy hh:mm:ss +zzzz"
dateFormatter.locale = Locale.init(identifier: "bg_BG")
let recdate = dateFormatter.date(from:"Fri, 10 Mar 2017 15:03:03 +0530")!;`
您为小时和时区设置了错误的格式说明符。使用这个:
dateFormatter.dateFormat = "EEE, dd MMM yyyy HH:mm:ss Z"
dateFormatter.locale = Locale(identifier: "en_US")
hh
表示 12 小时格式,因此没有 15 小时。使用 HH
代替
+zzzz
是无效的时区说明符。使用 Z
代替
- 除非星期五在保加利亚语中缩短为
Fri
,否则请使用英语语言环境
您有几个问题,首先,正如 Code Different 所指出的,您需要使用 HH 来读取 24 小时制。但是,您还指定了语言环境,这意味着 "word" 部分必须是保加利亚语,而不是英语。保留默认语言似乎工作正常:
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEE, dd MMM yyyy HH:mm:ss +zzzz"
//dateFormatter.locale = Locale.init(identifier: "bg_BG")
let recdate = dateFormatter.date(from:"Fri, 10 Mar 2017 15:03:03 +0530")!
如果您使用保加利亚语的日期和月份名称,您的格式应该有效。
dateFormatter.date(from:"нд, 10 март 2017 15:03:03 +0530")
我在 swift 3 中将字符串转换为日期时遇到问题。这是我的代码,它 returns 我在转换时为零值。
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEE, dd MMM yyyy hh:mm:ss +zzzz"
dateFormatter.locale = Locale.init(identifier: "bg_BG")
let recdate = dateFormatter.date(from:"Fri, 10 Mar 2017 15:03:03 +0530")!;`
您为小时和时区设置了错误的格式说明符。使用这个:
dateFormatter.dateFormat = "EEE, dd MMM yyyy HH:mm:ss Z"
dateFormatter.locale = Locale(identifier: "en_US")
hh
表示 12 小时格式,因此没有 15 小时。使用HH
代替+zzzz
是无效的时区说明符。使用Z
代替- 除非星期五在保加利亚语中缩短为
Fri
,否则请使用英语语言环境
您有几个问题,首先,正如 Code Different 所指出的,您需要使用 HH 来读取 24 小时制。但是,您还指定了语言环境,这意味着 "word" 部分必须是保加利亚语,而不是英语。保留默认语言似乎工作正常:
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEE, dd MMM yyyy HH:mm:ss +zzzz"
//dateFormatter.locale = Locale.init(identifier: "bg_BG")
let recdate = dateFormatter.date(from:"Fri, 10 Mar 2017 15:03:03 +0530")!
如果您使用保加利亚语的日期和月份名称,您的格式应该有效。
dateFormatter.date(from:"нд, 10 март 2017 15:03:03 +0530")