Быстрое создание EKEvent без регулировки летнего времени
В моем приложении есть функция для добавления события в календарь, этот процесс включает в себя анализ строкового представления даты (с настройкой перехода на летнее время и установкой для нее EKEvent startDate, вот фрагмент кода:
let eventStore : EKEventStore = EKEventStore()
eventStore.requestAccess(to: .event) { (granted, error) in
if (granted) && (error == nil) {
let event:EKEvent = EKEvent(eventStore: eventStore)
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy HH:mm"
// Just for demonstration
let myStartingDate = "16-04-2018 14:00:00"
if let eventDate = dateFormatter.date(from: myStartingDate) {
event.title = "Test event"
event.startDate = eventDate
event.endDate = eventDate.addingTimeInterval(TimeInterval(120 + 20 * 60))
event.notes = "This is a note"
event.location = "some location"
event.calendar = eventStore.defaultCalendarForNewEvents
do {
try eventStore.save(event, span: .thisEvent)
// Success, now open the calendar.
self.openCalendarOn(date: eventDate)
} catch let error as NSError {
print("failed to save event with error : \(error)")
}
}
}
}
Некоторое время все работало как положено, но после перехода на летнее время в Великобритании я заметил, что событие в календаре на час вперед
Например, событие, которое я установил, - "16-04-2018 14:00:00", а календарная дата - "16-04-2018 15: 00: 00".
Есть ли способ сказать EKEvent отключить настройку перехода на летнее время? Поскольку моя строка даты уже с ним.
1 ответ
Я обнаружил проблему, по-видимому, я строил объект DateFormatter с часовым поясом gmt+00:00. Как только я удалил часовой пояс, время в календаре ios осталось прежним.