gpt4 book ai didi

cocoa - 查找任意日期下一个最接近的一周中特定日期的 NSDate

转载 作者:行者123 更新时间:2023-12-03 16:05:45 24 4
gpt4 key购买 nike

假设今天是星期三。我可以将 NSDate 分解为 NSDateComponents,但我需要在下周一即将找到 NSDate。如果今天是星期一,那么下一个即将星期一就是今天。实现这一目标的正确方法是什么?

最佳答案

您可以在 NSCalendar 对象上使用 nextDateAfterDate: 方法来实现此目的,

let now = Date() // today

var matchingComponents = DateComponents()
matchingComponents.weekday = 2 // Monday

let comingMonday = Calendar.current.nextDate(after: now,
matching: matchingComponents,
matchingPolicy:.nextTime)

这里是一个查找下周一的简单方法。如果今天是星期一,则以下函数返回今天或最接近的下星期一。请注意,它使用 en_POSIX_US 以便可以匹配日期。当区域设置为 en_POSIX_US 时,工作日符号变为,

["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]

而且,这就是如何利用这几天,

func findNext(_ day: String, afterDate date: Date) -> Date? {

var calendar = Calendar.current
calendar.locale = Locale(identifier: "en_US_POSIX")

let weekDaySymbols = calendar.weekdaySymbols
let indexOfDay = weekDaySymbols.index(of: day)

assert(indexOfDay != nil, "day passed should be one of \(weekDaySymbols), invalid day: \(day)")

let weekDay = indexOfDay! + 1

let components = calendar.component(.weekday, from: date)

if components == weekDay {
return date
}

var matchingComponents = DateComponents()
matchingComponents.weekday = weekDay // Monday

let nextDay = calendar.nextDate(after: date,
matching: matchingComponents,
matchingPolicy:.nextTime)
return nextDay!
}


let nextMonday = findNext("Monday", afterDate: Date())
let mondayAfterThat = findNext("Monday", afterDate: nextMonday!)

let thursday = findNext("Thursday", afterDate: mondayAfterThat!)

关于cocoa - 查找任意日期下一个最接近的一周中特定日期的 NSDate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31740404/

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