DataFormatter.date(from: " ") возвращает неправильное значение (- 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"

Я знаю, что это плохо timeZone, но как установить часовой пояс для даты конвертации из строки, если конвертация даты в строку работает хорошо

2 ответа

Решение

Попробуй это

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"

Чтобы установить timeZone собственность, которую вы должны предоставить NSTimeZone пример. Вы можете создать один например:

• NSTimeZone (имя: "Тихоокеанское летнее время") • NSTimeZone(сокращение: "PST") • NSTimeZone(forSecondsFromGMT: 3600)

Не забудьте использовать имя TimeZone, а не название города.

Другие вопросы по тегам