首页 > 解决方案 > 在 Swift 中计算下一个发薪日

问题描述

我正在尝试在 Swift 中进行一些数学计算并且有点卡住了。

基本上我们每第 4 个星期五领薪水,我想根据今天的日期进行计算,算出距离下一个发薪日还有多少天。

我有一个参考日“28/03/2008”,

标签: swiftmath

解决方案


为了计算该月的下一个第四个星期五,您需要将 和 结合DateComponents起来Calendar

// The 4th Friday at noon
let payDayComps = DateComponents(hour: 12, weekday: 6, weekdayOrdinal: 4)
// Given the current date, calculate the next 4th Friday at noon
let nextPayDay = Calendar.current.nextDate(after: Date(), matching: payDayComps, matchingPolicy: .nextTime)

如果您的目标是根据今天的日期获得下一个第四个星期五,则您不需要过去的参考日期。after如果您需要根据其他特定日期计算第四个星期五,请更改参数的值。

如果在一个月的第四个星期五运行,那么如果在中午之前运行,它将返回今天的日期,如果在中午之后运行,它将返回下个月的第四个星期五。payDayComps如果您想要不同的结果(例如0午夜) ,请更改小时值。

要计算距离下一个发薪日的天数,您可以执行以下操作:

let daysToPayDay = Calendar.current.dateComponents([.day], from: Date(), to: nextPayDay).day!

推荐阅读