gpt4 book ai didi

ios - 在 Swift 中使用 NSDate 组件

转载 作者:IT王子 更新时间:2023-10-29 05:29:28 26 4
gpt4 key购买 nike

我有一个日期需要分成几个部分。例如

let components = NSCalendarUnit.CalendarUnitDay | NSCalendarUnit.CalendarUnitHour
let date = calendar.components(components, fromDate: aDate, toDate: NSDate(), options: nil)
var dateToPrint = "\(date.day) days \(date.hour) hours"

dateToPrint 将是从 aDate 到现在的天数和小时数。但是如果我想要周数而不是天数

let components = NSCalendarUnit.CalendarUnitWeek | NSCalendarUnit.CalendarUnitHour
let date = calendar.components(components, fromDate: aDate, toDate: NSDate(), options: nil)
var dateToPrint = "\(date.week) weeks \(date.hour) hours"

date.week 不存在。那么我该如何解决呢?

最佳答案

Xcode 8.3.2 • Swift 3.1

extension Date {
func xDays(_ x: Int) -> Date {
return Calendar.current.date(byAdding: .day, value: x, to: self)!
}
func xWeeks(_ x: Int) -> Date {
return Calendar.current.date(byAdding: .weekOfYear, value: x, to: self)!
}
var weeksHoursFromToday: DateComponents {
return Calendar.current.dateComponents( [.weekOfYear, .hour], from: self, to: Date())
}
var relativeDateString: String {
var result = ""
if let weeks = weeksHoursFromToday.weekOfYear,
let hours = weeksHoursFromToday.hour,
weeks > 0 {
result += "\(weeks) week"
if weeks > 1 { result += "s" }
if hours > 0 { result += " and " }
}
if let hours = weeksHoursFromToday.hour, hours > 0 {
result += "\(hours) hour"
if hours > 1 { result += "s" }
}
return result
}
}

let today       = Date()                  // "May 1, 2017, 9:29 PM"
let yesterday = Date().xDays(-1) // "Apr 30, 2017, 9:29 PM"
let twoWeeksAgo = Date().xWeeks(-2) // "Apr 17, 2017, 9:29 PM"
let anotherDate = DateComponents(calendar: .current, year: 2013, month: 12, day: 4).date! // "Dec 4, 2013, 12:00 AM"
let anotherDate2 = DateComponents(calendar: .current, year: 2012, month: 12, day: 3).date! // "Dec 3, 2012, 12:00 AM"


yesterday.relativeDateString // "24 hours"
twoWeeksAgo.relativeDateString // "2 weeks"
anotherDate.relativeDateString // "177 weeks and 141 hours"
anotherDate2.relativeDateString // "230 weeks and 21 hours"
yesterday.relativeDateString // "24 hours"
twoWeeksAgo.relativeDateString // "2 weeks"
anotherDate.relativeDateString // "177 weeks and 141 hours"
anotherDate2.relativeDateString // "230 weeks and 21 hours"

关于ios - 在 Swift 中使用 NSDate 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27339072/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com