我对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"
我知道这是不好的时间区域,但如果将转换日期的时区设置为字符串,如果将日期转换为字符串工作正常
答案 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"