Я новичок в форматах даты, выбранной дате и времени из datepicker, и мне нужно преобразовать в требуемый перед отправкой на сервер - PullRequest
0 голосов
/ 02 августа 2020

дата и время, выбранные из datepicker, и должны быть преобразованы в требуемые перед отправкой на сервер. невозможно преобразовать в требуемый из.

func convertToUTC(dateToConvert:String) -> String {
      let formatter = DateFormatter()
      formatter.dateFormat = "EEE MMM d yyyy HH:mm:ss.SSS'Z"

      let convertedDate = formatter.date(from: dateToConvert)
      formatter.timeZone = TimeZone(identifier: "UTC")
      return formatter.string(from: convertedDate!)
         }

requred date form is Sat Aug 1 2020 23:38:56 GMT+0530

1 Ответ

1 голос
/ 02 августа 2020

Вы можете просто создать два формата даты, один для анализа входной строки даты, а другой для преобразования даты в формат даты вашего сервера:

extension Formatter {
    static let inputDate: DateFormatter = {
        let dateFormatter = DateFormatter()
        dateFormatter.locale = .init(identifier: "en_US_POSIX")
        dateFormatter.dateFormat = "EEE MMM d yyyy HH:mm:ss.SSSZ"
        return dateFormatter
    }()
    static let serverDate: DateFormatter = {
        let dateFormatter = DateFormatter()
        dateFormatter.locale = .init(identifier: "en_US_POSIX")
        dateFormatter.dateFormat = "EEE MMM d yyyy HH:mm:ss 'GMT'xxxx"
        return dateFormatter
    }()
}
func convertToServer(input: String) -> String? {
    guard let date = Formatter.inputDate.date(from: input) else { return nil }
    return Formatter.serverDate.string(from: date)
}

convertToServer(input: "Sat Aug 1 2020 23:38:56.123Z") // "Sat Aug 1 2020 20:38:56 GMT-0300"
...