У меня есть API, который я использую, который возвращает дату в полночь на восточном побережье США. Эта дата, в свою очередь, используется вычисляемой переменной для возврата локализованной строки.Проблема, с которой я сталкиваюсь, заключается в том, что любой, кто на один или несколько часовых поясов отстает от восточного времени, получит день раньше от объекта даты, возвращенного из API.
Вот что я придумал для решения этой проблемы.Это выглядит странно, поэтому я надеялся увидеть, есть ли лучший способ получить объект даты в не восточном часовом поясе, который соответствует месяцу, дню и году исходного объекта даты.
if let timeZone = TimeZone(identifier: "America/New_York"),
let date = dateObjectFromTheAPI {
var dateComponentsFromAPI = Calendar.current.dateComponents(in: timeZone, from: date)
let easternYear = dateComponentsFromAPI.year
let easternMonth = dateComponentsFromAPI.month
let easternDay = dateComponentsFromAPI.day
if let year = easternYear,
let month = easternMonth,
let day = easternDay {
var dateWithTimeZoneStripped = DateComponents()
dateWithTimeZoneStripped.month = month
dateWithTimeZoneStripped.year = year
dateWithTimeZoneStripped.day = day
Calendar.current.date(from: dateWithTimeZoneStripped)
}
}
Спасибо за чтение.