дата не отображается после преобразования строки в дату в swift - PullRequest
0 голосов
/ 15 марта 2019

У меня есть строки и преобразование в формат даты, но когда я выполняю преобразование после того, как дата отображается правильно, а время показывает неверный формат

firsDateString: 2019-Mar-15 9:00 AM
secondName: 2019-Mar-15 20:00

Преобразование строки в формат даты

let addedDate = firsDateString
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MMM-dd hh:mm  a"
let date1 = formatter.date(from: addedDate)
print("DATE \(date1)")

После этого получаю следующие значения:

DATE Optional(2019-03-15 03:30:00 +0000)

Как получить правильный формат даты?

Ответы [ 3 ]

0 голосов
/ 15 марта 2019

Вам нужно преобразовать его обратно в строку перед печатью

let addedDate = "2019-Mar-15 9:00 AM"    
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MMM-dd hh:mm  a"
let date1 = formatter.date(from: addedDate)

if let date = date1 {
    print(formatter.string(from: date))
}

Выход

2019-март-15 09:00 утра

Если вам нужен 24-часовой формат в выходных данных, вам нужно изменить шаблон для вашего форматера

let addedDate = "2019-Mar-15 8:00 AM"
let secDate = "2019-Mar-15 9:00 PM"
let formatter = DateFormatter()
formatter.timeZone = TimeZone.init(abbreviation: "")
formatter.dateFormat = "yyyy-MMM-dd hh:mm a"
let date1 = formatter.date(from: addedDate)
let date2 = formatter.date(from: secDate)

formatter.dateFormat = "yyyy-MMM-dd HH:mm"

if let date = date1 {
    print(formatter.string(from: date))
}

if let date = date2 {
    print(formatter.string(from: date))
}

выход

2019-март-15 08: 00
2019-март-15 21: 00

0 голосов
/ 15 марта 2019

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

let formatter = DateFormatter ()

formatter.dateFormat = "гггг-ммм-дд чч: мм а"

let date1 = formatter.date (от: "2019-Mar-15 9:00 AM")

formatter.amSymbol = ""

formatter.pmSymbol = ""

let currentDateStr = formatter.string (from: date1!)

print ("currentDateStr (currentDateStr)")

на основе точки @JoakimDanielson

Как это может быть принятым ответом, когда вы больше не можете определить разницу между 8 утра и 8 вечера

здесь нужно следовать 24-часовому формату, я обновляю свой ответ,

Вариант 2

    let formatter = DateFormatter()
    formatter.dateFormat = "yyyy-MMM-dd hh:mm a"
    let date1 = formatter.date(from: "2019-Mar-15 9:00 AM")
    formatter.dateFormat = "yyyy-MMM-dd HH:mm"
    let currentDateStr = formatter.string(from: date1!)
    print("currentDateStr \(currentDateStr)")

выход

enter image description here

0 голосов
/ 15 марта 2019

Проверьте это:

    let addedDate = firsDateString
    let formatter = DateFormatter()
    formatter.timeZone = (NSTimeZone(name: "UTC")! as TimeZone)
    formatter.dateFormat = "yyyy-MMM-dd hh:mm a"
    let date1 = formatter.date(from: addedDate)
    print("DATE \(String(describing: date1!))")
...