DataFormatter.date(发件人: " " ) 返回错误的值 (- 1 天) 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"

我知道这是不良时区,但是如何将我的时区设置为从字符串转换日期的时区,如果转换日期为字符串工作良好

尝试此

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"

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

•nstimezone(名称:"太平洋日光时间"( •nstimezone(缩写:" PST"( •nstimezone(forsecondsfromgmt:3600(

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

相关内容

最新更新