Как получить день и месяц от типа даты - swift 4 - PullRequest
0 голосов
/ 18 ноября 2018

У меня есть переменная с типом данных Дата, где я сохранил дату в этом формате

2018-12-24 18:00:00 UTC

Как можноЯ получаю с этого дня или месяца?

Ответы [ 3 ]

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

Строка даты не соответствует ISO8601, тем не менее, вы можете использовать ISO8601DateFormatter, если вы замените <space> + UTC на Z и будете использовать опции нестандартного формата.

Создайте Date из строки и получите DateComponents для day и month

let string = "2018-12-24 18:00:00 UTC"

let formatter = ISO8601DateFormatter()
let trimmedString = string.replacingOccurrences(of: "\\s?UTC", with: "Z", options: .regularExpression)
formatter.formatOptions = [.withFullDate, .withFullTime, .withSpaceBetweenDateAndTime]
if let date = formatter.date(from: trimmedString) {
    let components = Calendar.current.dateComponents([.day, .month], from: date)
    let day = components.day!
    let month = components.month!
    print(day, month)
}
0 голосов
/ 18 ноября 2018

Это тип String или Date?

если это дата, которую вы можете сделать так:

 let calanderDate = Calendar.current.dateComponents([.day, .year, .month], from: date)

, которая даст вам день, год и месяц

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

Если вы сохранили «2018-12-24 18:00:00 UTC» как строку, вы можете попробовать это:

    let dateString = "2018-12-24 18:00:00 UTC"
    let formatter = DateFormatter()
    formatter.dateFormat = "yyyy-MM-dd HH:mm:ss 'UTC'"
    guard let date = formatter.date(from: dateString) else {
        return
    }

    formatter.dateFormat = "yyyy"
    let year = formatter.string(from: date)
    formatter.dateFormat = "MM"
    let month = formatter.string(from: date)
    formatter.dateFormat = "dd"
    let day = formatter.string(from: date)
    print(year, month, day) // 2018 12 24

С наилучшими пожеланиями!

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