如何从日期类型中获取日期和月份 - swift 4

Max*_*Max 26 date swift

我有数据类型为日期的变量,我以这种格式存储日期

2018-12-24 18:00:00 UTC

我怎样才能从这一天或这个月得到?

Vas*_*huk 36

细节

  • Xcode 版本 11.0 (11A420a),Swift 5

链接

如何将字符串转换为日期

解决方案

extension Date {
    func get(_ components: Calendar.Component..., calendar: Calendar = Calendar.current) -> DateComponents {
        return calendar.dateComponents(Set(components), from: self)
    }

    func get(_ component: Calendar.Component, calendar: Calendar = Calendar.current) -> Int {
        return calendar.component(component, from: self)
    }
}
Run Code Online (Sandbox Code Playgroud)

用法

let date = Date()

// MARK: Way 1

let components = date.get(.day, .month, .year)
if let day = components.day, let month = components.month, let year = components.year {
    print("day: \(day), month: \(month), year: \(year)")
}

// MARK: Way 2

print("day: \(date.get(.day)), month: \(date.get(.month)), year: \(date.get(.year))")
Run Code Online (Sandbox Code Playgroud)


iro*_*oei 15

那是 String 还是 Date 类型?

如果是日期,您可以这样做:

 let calanderDate = Calendar.current.dateComponents([.day, .year, .month], from: date)
Run Code Online (Sandbox Code Playgroud)

这会给你日、年和月


小智 11

如果您将“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
Run Code Online (Sandbox Code Playgroud)

最好的祝愿!