gpt4 book ai didi

ios - 如何在 Swift 中从当年的每个月中获取一半

转载 作者:行者123 更新时间:2023-11-28 14:52:01 25 4
gpt4 key购买 nike

在我的应用程序中,我可以选择每 15 天输入一次数据。我必须在当年维护它。请帮我解决这个问题。例如:[ “1-1-2018 至 15-1-2018”、“16-1-2018 至 31-1-2018”、 “1-2-2018 至 15-2-2018”、“16-2-2018 至 28-2-2018”、 “1-3-2018 至 15-3-2018”、“16-3-2018 至 31-3-2018”、 “1-4-2018 至 15-4-2018”、“16-4-2018 至 30-4-2018”、 “1-5-2018 至 15-5-2018”、“16-5-2018 至 31-5-2018”、 “1-6-2018 至 15-6-2018”、“16-6-2018 至 30-6-2018”、 “1-7-2018 至 15-7-2018”、“16-7-2018 至 31-7-2018”、 “1-8-2018 至 15-8-2018”、“16-8-2018 至 31-8-2018”、 “1-9-2018 至 15-9-2018”、“16-9-2018 至 30-9-2018”、 “1-10-2018 至 15-10-2018”、“16-10-2018 至 31-10-2018”、 “1-11-2018 至 15-11-2018”、“16-11-2018 至 30-11-2018”、 “1-12-2018 至 15-12-2018”、“16-12-2018 至 31-12-2018” ]

最佳答案

Calendar API 中,您可以获得给定日期中任何月份的总天数以及该月的第一天,如下所示,

extension Calendar {

public func firstDayOfMonth(date: Date) -> Date {
let components = self.dateComponents([.year, .month], from: date)
return self.date(from: components) ?? date
}

public func numberOfDaysInMonthFor(date: Date) -> Int {
let range = self.range(of: .day, in: .month, for: date)
return range?.count ?? 0
}

public func lowerHalfOfMonthFor(date: Date) -> (Date, Date) {
let startDate = self.firstDayOfMonth(date: date)
let endDate = startDate.dateByAppending(day: 14)

return (startDate, endDate)
}

public func upperHalfOfMonthFor(date: Date) -> (Date, Date) {
let firstDayOfMonthDate = self.firstDayOfMonth(date: date)
let totalNoOfDaysInMonth = self.numberOfDaysInMonthFor(date: firstDayOfMonthDate)

let startDate = firstDayOfMonthDate.dateByAppending(day: 15)
let endDate = firstDayOfMonthDate.dateByAppending(day: totalNoOfDaysInMonth - 1)

return (startDate, endDate)
}
}

您还可以通过附加任意天数来扩展日期以获得新日期,

extension Date {

public func dateByAppending(day: Int) -> Date {
let newDate = Calendar.current.date(byAdding: .day, value: day, to: self)
return newDate ?? self
}

public func daysDifference(_ date: Date?) -> Int? {
guard let date = date else { return nil }
return Calendar.current.dateComponents([.day], from: self, to: date).day
}

结合使用上述辅助方法,您应该能够实现如下所示的所需结果,

let date = Date()
let lowerHalf = Calendar.current.lowerHalfOfMonthFor(date: date)
let uppperHalf = Calendar.current.upperHalfOfMonthFor(date: date)

关于ios - 如何在 Swift 中从当年的每个月中获取一半,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49788900/

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