Отметка времени от выпуска строки? - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть две строки, дата и время.строка даты имеет дату в формате «ММ-дд-гггг» и время в формате «чч: мм а», я хочу создать 10-значную временную метку из того же.Я сделал следующее, но у меня возникли проблемы с этим.Любая помощь приветствуется.

let idate = (userInstance.userData?.Date!)! + "T" + (userInstance.userData?.Time!)!  + "+0000"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
let date = dateFormatter.date(from: idate)!
print(date)

let timestamp = Int(date.timeIntervalSince1970)
print(timestamp)

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Здесь вы видите сбой:

let date = dateFormatter.date(from: idate)!

Это потому, что вы утверждаете, что idate - это строка в следующем формате:

"yyyy-MM-dd'T'HH:mm:ssZ"

Но это не так.Когда вы конвертируете строку в дату, ваша строка формата должна точно соответствовать формату строки.

Затем вы можете указать другой формат и преобразоватьдата новой строки.

0 голосов
/ 18 сентября 2018

Нельзя принудительно установить дату, содержащую время AM / PM, в ISO 8601. Даты ISO 8601 всегда представлены в 24-часовом режиме.
Кроме того, ваш порядок года, месяца и дня не соответствует ISO 8601.

Укажите соответствующий формат даты MM-dd-yyyyhh:mm aZ

let datePart = "09-18-2018"
let timePart = "4:22 pm"

let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "MM-dd-yyyyhh:mm aZ"
let date = dateFormatter.date(from: datePart + timePart + "+0000")!
let timestamp = Int(date.timeIntervalSince1970)
print(timestamp)
...