DataFormatter.date(from:“”)返回错误的值( - 1天)Swift

时间:2018-04-24 16:03:18

标签: swift dateformatter

我对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"

我知道这是不好的时间区域,但如果将转换日期的时区设置为字符串,如果将日期转换为字符串工作正常

2 个答案:

答案 0 :(得分:0)

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

•NSTimeZone(名称:“太平洋夏令时”)  •NSTimeZone(缩写:“PST”)  •NSTimeZone(forSecondsFromGMT:3600)

请记住使用TimeZone名称而不是城市名称。

答案 1 :(得分:0)

试试这个

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"