Разбор строки SwiftDate вернул на 1 день меньше результата - PullRequest
0 голосов
/ 06 октября 2018

Я пытаюсь разобрать строку даты в Date классе.Я использую SwiftDate для этого.Но когда я попытался разобрать его, он вернул на 1 день меньше значения в строке.Вот несколько примеров:

let birthString = "1996-10-08"
self.birthday = Date(birthString, format: "yyyy-MM-dd", region: Region.current) 
//Result: self.birthday = 1996-10-07 17:00:00 UTC 

let expiredString = "2019-09-30"
self.membershipExpiredDate = Date(expiredString, format: "yyyy-MM-dd", region: Region.current) 
//Result: self.membershipExpiredDate = 2019-09-29 17:00:00 UTC

Как я могу исправить эту ошибку?Спасибо.

1 Ответ

0 голосов
/ 06 октября 2018

SwiftDate использует регионы, и вы устанавливаете регион на Region.current.Дата верна, и вы можете проверить это, используя свойство .timeIntervalSince1970.Происходит следующее: когда вы печатаете дату (которая на самом деле представляет собой просто TimeInterval, он же Double, конкретный момент времени , независимо от календаря или часового пояса ), она печатает описание свойство, с часовым поясом по умолчанию UTC (Вы можете увидеть его в своем выводе 17:00:00 UTC).

Чтобы напечатать дату, используя текущую локаль, используйте this метод экземпляра:

print(date.description(with: Locale.current))
...