Преобразование времени из строки в дату: 12 становится 00 быстрым

Я сохраняю время в Firebase, а затем позволяю пользователю перезагрузить сохраненное время.

Когда я извлекаю данные с сервера (в виде строки), а затем преобразую время обратно в тип даты, оно меняется с 12:00 (полдень) на 00:00 (полночь).

Я вижу данные в моей базе данных Firebase в реальном времени, и там четко указано 12:00, а не полночь.

Изображение Firebase

Вот код, который я использую для извлечения данных из словаря, который я скачал из базы данных реального времени.

if let gtt1hourLabTime = patientDataDictionary["1 Hour lab Time"] as? String {
      if let realgtt1HourLabTime = timeFormatTool(gtt1hourLabTime) {
                print(realgtt1HourLabTime)
                patientVC.gtt1HourLabTime = realgtt1HourLabTime
       }
}

Вот мой инструмент формата времени:

func timeFormatTool(_ dateStr: String) -> Date? {
        let simpleDateFormat = DateFormatter()
        simpleDateFormat.dateFormat = "hh:mm"

        let date = simpleDateFormat.date(from: dateStr)
        return date
}

Когда время напечатано, оно выглядит так:

2000-01-01 00:18:00 +0000

person paul_f    schedule 18.10.2017    source источник
comment
вам нужно использовать HH:mm HH означает 00-23. hh в формате с 1:00 до 12:00.   -  person Leo Dabus    schedule 18.10.2017


Ответы (1)


Поскольку вы используете формат hh:mm, после 11:59 формат возвращается к 00:00. Если вам нужен 24-часовой формат, который включает 12:xx, вам просто нужно изменить формат даты на этот:

simpleDateFormat.dateFormat = "HH:mm"
person PoolHallJunkie    schedule 18.10.2017