Ошибка при преобразовании строки даты в формате «гггг-ММ-дд ЧЧ: мм: сс.м» в «гггг-ММ-дд ЧЧ: мм: сс» - PullRequest
0 голосов
/ 01 мая 2020

Я работаю над проектом iOS в swift 5. В одном из моих API дата идет в формате «гггг-мм-дд чч: мм: сс.м». И с этой даты мне нужно выбрать время. Но проблема в том, что дата, которую я получаю от API, это «1900-01-01 08: 30: 00.000000», и когда я конвертирую этот формат даты в ГГГГ-ММ-дд ЧЧ: мм: сс, результат поступает как «1900-01-01 08:00:00», время до преобразования 08: 30: 00.000000, но после преобразования 08:00:00. Почему это происходит? Пожалуйста, помогите мне.

Я добавлю свой код здесь,

    let dateTime = "1900-01-01 08:30:00.000000"
    let outFormatter = DateFormatter()
    outFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss.m"

    if let date = outFormatter.date(from: dateTime) { 
        //here value od date is 1900-01-01 04:18:48 +0000
        outFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
        outFormatter.locale = tempLocale
        let exactDate = outFormatter.string(from: date)
        //here the value of exactDate is 1900-01-01 08:00:00
    }

1 Ответ

1 голос
/ 01 мая 2020

m - минуты, а S - миллисекунды, поэтому формат должен быть "yyyy-MM-dd HH:mm:ss.S".

Кроме того, для фиксированных форматов даты настоятельно рекомендуется установить языковой стандарт на en_US_POSIX

* 1008. *

Но если вы хотите убрать миллисекунды из строки даты, есть более простое решение

let dateTime = "1900-01-01 08:30:00.000000"
let exactDate = dateTime.replacingOccurrences(of: "\\.\\d+", with: "", options: .regularExpression)

Она удаляет точку и любые ди git позади

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...