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, а не название города.