DataFormatter.date(来自:“”)return 错误的值(- 1 天)Swift

DataFormatter.date(from: " ") return wrong value (- 1 day) Swift

我对 DateFormatter 有疑问。我设置了我的当前时区 formatter.timezone = Calendar.current.timezone 但是当我从当前日期 Date() 转换时,我得到了 - 1 天

的价值

我的代码

let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
formatter.calendar = Calendar(identifier: .iso8601)
formatter.timeZone = Calendar.current.timeZone
formatter.locale = Calendar.current.locale
let date = Date()
let dateString = formatter.string(from: date) // "2018-04-24"
viewModel.currentDate = formatter.date(from: dateString)!
print("\(viewModel.currentDate)") // "2018-04-23"

我知道这是错误的时区,但是如果将日期转换为字符串工作正常,如何设置我的时区以从字符串转换日期

要设置 timeZone 属性 你需要提供一个 NSTimeZone 实例。例如,您可以创建一个:

• NSTimeZone(名称:"Pacific Daylight Time") • NSTimeZone(缩写:"PST") • NSTimeZone(forSecondsFromGMT: 3600)

记住使用时区名称而不是城市名称。

试试这个

let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
formatter.timeZone = TimeZone(abbreviation: "GMT+0:00")
let date = Date()
let dateString = formatter.string(from: date) // "2018-04-24"
print("\(formatter.string(from: formatter.date(from: dateString)!))") // "2018-04-23"