swift - 在 Swift 中计算下一个发薪日
问题描述
我正在尝试在 Swift 中进行一些数学计算并且有点卡住了。
基本上我们每第 4 个星期五领薪水,我想根据今天的日期进行计算,算出距离下一个发薪日还有多少天。
我有一个参考日“28/03/2008”,
解决方案
为了计算该月的下一个第四个星期五,您需要将 和 结合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!
推荐阅读
- javascript - 为什么我在react项目中设置了代码拆分,却没有生成异步chunks文件
- android - LinearLayout内部的多个RelativeLayout显示错误
- sql - 在地方之间寻找
- python - 使用 PDFMiner for Python 将 pdf 的所有页面合并为一个文本
- python-3.x - Pandas 中的新出现计数
- javascript - Javascript 在新行上打印
- python - 使用 python 计算数据增强以进行深度学习时内存崩溃
- php - 无法从供应商加载 mailgun 类
- nsis - 如何使用 NSIS 将注册表值从以前版本的安装程序导出和导入到当前版本的安装程序
- flutter - Flutter - 如何从另一个小部件重建未来的小部件