【发布时间】:2018-01-24 11:35:12
【问题描述】:
我已经格式化了一个字符串回溯到基本转换的日期,我得到了完全不同的日期。
import UIKit
extension String {
func toDate(dateFormat: String) -> Date {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = dateFormat
return dateFormatter.date(from: self)!
}
}
let date = "01/24/2018 09:59:24"
print(date.toDate(dateFormat: "MM/dd/YYYY hh:mm:ss"))
为什么减少了大约一个月零一小时?
编辑
import UIKit
extension String {
func toDate(dateFormat: String) -> Date {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = dateFormat
dateFormatter.timeZone = TimeZone.current
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
return dateFormatter.date(from: self)!
}
}
extension Date {
func toString(_ format: String) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = format
dateFormatter.timeZone = TimeZone.current
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
return dateFormatter.string(from: self)
}
}
let date = Date().toString("MM/dd/yyyy hh:mm:ss")
print(date)
print(date.toDate(dateFormat: "MM/dd/yyyy hh:mm:ss"))
结果
01/24/2018 12:48:33
2018-01-23 23:48:33 +0000
【问题讨论】:
-
添加代码而不是图像。
-
三件事。首先,您使用的是
YYYY而不是yyyy(详见here)。其次,您没有使用en_US_POSIX作为语言环境,这可能导致不正确/无效的结果。第三,打印日期使用 UTC 而不是当地的时区。 -
@the4kman 知道了。我添加了一个
locale作为en_US_POSIX,然后是timeZone。谢谢! -
... 对于 24 小时模式,您必须使用
HH -
@noname:关于“-1h”,见stackoverflow.com/questions/39937019/…。
标签: swift