Swift - 将字符串转换为日期
Posted
技术标签:
【中文标题】Swift - 将字符串转换为日期【英文标题】:Swift - Convert string to date 【发布时间】:2018-01-04 15:17:32 【问题描述】:仅在 ios 11+ 上,我有这个错误:当用户在电话时间设置中禁用 24 小时模式时,我的字符串无法使用此代码解析为最新。
在其他iOS版本上,没有问题...
是否缺少强制格式化程序使用 24 小时模式的内容?
变量date
和beginHour
来自网络服务。
// input date = 20171201
// input beginHour = 2359
let dateTimeFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "fr_FR")
dateFormatter.timeZone = TimeZone.autoupdatingCurrent
dateTimeFormatter.dateFormat = "yyyyMMdd HHmm"
if let date = dateTimeFormatter.date(from: date+" "+beginHour)
// ...
【问题讨论】:
很可能是 ***.com/questions/40692378/… 的副本——在解析固定格式字符串时将格式化程序区域设置为“en_US_POSIX”。 已经试过了,不行。 这很奇怪。你能显示你更新的代码吗? (请复制您的 real 代码,问题中存在“dateTimeFormatter”与“dateFormatter”不一致的问题。) 它在 11.0.3 中工作:在 24 小时禁用模式下测试 let dateTimeFormatter = DateFormatter() dateTimeFormatter.locale = Locale(identifier: "fr_FR") dateTimeFormatter.timeZone = TimeZone.autoupdatingCurrent dateTimeFormatter.dateFormat = " yyyyMMdd HHmm" if let date = dateTimeFormatter.date(from: "20171201"+" "+"2359") print(date) output: 2017-12-01 18:29:00 +0000 这是一个变量名错误...谢谢@Martin R 【参考方案1】:我认为在您的代码中,您没有使用正确的 dateFormatter, 请检查 dateTimeFormatter 和 dateFormatter,
let dateTimeFormatter = DateFormatter()
dateTimeFormatter.locale = Locale(identifier: "fr_FR")
dateTimeFormatter.timeZone = TimeZone.autoupdatingCurrent
dateTimeFormatter.dateFormat = "yyyyMMdd HHmm"
if let date = dateTimeFormatter.date(from: date+" "+beginHour)
// ...
【讨论】:
你在说哪个'dateTimeFormatter'。你能解释一下吗?? 在他的代码中,他可能拼错了 dateFormatter,在第一行中他使用的是 dateTimeFormatter,而在第 2 行和第 3 行中他使用的是 dateFormatter 是的,没有错误,因为在这段代码之前,我有一个名为 dateFormatter 的变量...以上是关于Swift - 将字符串转换为日期的主要内容,如果未能解决你的问题,请参考以下文章