Swift: форматирование начальной и конечной даты в одну строку - PullRequest
0 голосов
/ 12 июня 2018

У меня есть эти две даты в строковом формате:

let startDate = "2018-06-14"
let endDate = "2018-06-17"

Я хотел бы отформатировать их вместе так:

14-17 июня 2018 года

Однако, если дата начала и окончания приходится на разные месяцы, ее следует отформатировать следующим образом:

29 июня - 1 июля 2018 года

Иесли дата начала и окончания приходится на разные годы, ее следует отформатировать следующим образом:

29 декабря 2018 г. - 1 января 2019 г.

Существует ли простой способДелая это, используя родной Swift DateFormatter?

Есть ли популярный модуль, который может помочь с этим?

Каков наилучший способ для этого форматирования?

1 Ответ

0 голосов
/ 12 июня 2018

Вот мой ответ:

   if let startDate = startDateString.toDate(withFormat: "yyyy-MM-dd"),
        let endDate = endDateString.toDate(withFormat: "yyyy-MM-dd") {
        let formatter = DateIntervalFormatter()
        formatter.dateStyle = .long
        formatter.timeStyle = .none
        dateLabel.text = formatter.string(from: startDate, to: endDate)
    }

И это расширение:

extension String {

    func toDate(withFormat format: String) -> Date? {
        let formatter = DateFormatter()
        formatter.dateFormat = format
        formatter.locale = Locale(identifier: "en_US_POSIX")
        return formatter.date(from: self)
    }

}
...