2016-10-09 5 views
0

У меня есть следующий кодФормат даты Swift 3,0

var calendar = Calendar.current 

let unitFlags = Set<Calendar.Component>([.hour, .year, .minute]) 
calendar.timeZone = TimeZone(identifier: "UTC")! 

let startHour = calendar.component(.hour, from: cell.startDate as Date) 
let startMinutes = calendar.component(.minute, from: cell.endDate as Date) 

let endHour = calendar.component(.hour, from: cell.endDate as Date) 
let endMinute = calendar.component(.minute, from: cell.endDate as Date) 

print("start hours = \(startHour) : \(startMinutes)") 
print("end hours = \(endHour) : \(endMinute)") 

Таким образом, результат был прав, но в неправильном формате. Например, он печатает 22:30, чего я хочу, но когда дело доходит до чисел менее 10, например, 2 AM, оно печатает 2: 0 вместо 02:00. Как я могу решить эту проблему? Я пытаюсь связать dateformatter с календарем, но я не могу. Я также попытался решить эту проблему, используя следующий подход:

let myFormatter = DateFormatter() 
myFormatter.dateFormat = "HH:mm" 

print(myFormatter.string(from: cell.startDate)) 
print(myFormatter.string(from: cell.endDate)) 

Но это часы печати, которые не имеют никакого отношения к точным часам. Не знаю, почему.

Итак, любая помощь будет высоко оценена!

ответ

1

Существуют различные способы добавления недостающего начального нуля, однако наилучшим решением является использование DateFormatter. У вас есть только одна проблема с форматированием - установка правильного часового пояса.

// safer than using identifiers that are not actually standardised 
myFormatter.timeZone = TimeZone(secondsFromGMT: 0) 
+0

Не работает. Это часы печати, которые за 3 часа до того, что должно быть на самом деле. – rgoncalv

+0

Это, например, дата, записанная в базе данных: 2016-10-18T22: 00: 00.000Z. Таким образом, это печать 01:00 вместо 22:00 – rgoncalv

+0

Кроме того, если пользователь создает встречу со временем, не удается ли получить его часовой пояс и правильно установить его для других пользователей из того же часового пояса, которые видят встречу ? – rgoncalv

Смежные вопросы