Я хочу конвертировать AM/PM время в 24h. Это должно быть совершенно тривиальным ... однако я стою против странного вопроса:Недействительная дата после конвертации 12h -> 24h
let inputDateString = "11:05:45PM"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "HH:mm:ssa"
let inputDate = dateFormatter.dateFromString(inputDateString) // "Jan 1, 2000, 12:05 PM" ???
if let inputDate = inputDate {
dateFormatter.dateFormat = "HH:mm:ss"
print(dateFormatter.stringFromDate(inputDate))
}
- Я подумал, что, может быть, это преобразование времени, используя какой-то странный часовой пояс. Поэтому я попытался добавить
systemLocale
или GB locale, что не помогло. - Тогда я придумал, что, возможно, он не может установить дату до 01.01.2000 12:00 (что не имеет смысла, потому что оно должно работать хотя бы с года ~ 1970). Поэтому я добавил день, месяц и т. Д., Чтобы перенести его на 2005 год, но проблема все еще сохраняется.
Вы можете легко вставить это на Игровое поле с import Foundation
, чтобы проверить его.
Почему я получаю неправильный час?
- Edit -
Если изменить inputDateString
в любой другой час, как "01:05:45PM"
, то inputDate
бы то же самое:/Но если изменить минуты или секунды, он обновляется соответствующим образом.
Первый формат должен быть 'чч: мм: ssa' – Desdenova
1 января 2000 потому, что вы хотите прочитать даты без даты, но только время. Он ставит по умолчанию в нем. – pedrouan
@pedrouan Это был не вопрос. Во всяком случае, ответ уже ниже;). – Vive