DataFormatter.date (from: "") возвращает неправильное значение (- 1 день) Swift - PullRequest
0 голосов
/ 24 апреля 2018

У меня проблема с 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 голосов
/ 24 апреля 2018

Попробуйте это

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"
0 голосов
/ 24 апреля 2018

Для установки свойства timeZone необходимо предоставить экземпляр NSTimeZone.Вы можете создать его, например:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...