Swift技术问询:如何从计算出的下个月日期中提取月份数值
获取下个月的月份(及年份)数值
嘿,其实你离答案只差一步啦!你已经成功算出了下个月的日期对象,现在只需要用你已经用过的calendar.component方法,从这个日期里把月份(甚至年份)提出来就行,完全不用折腾DateFormatter~
给你调整后的代码,还加了安全处理:
let calendar = Calendar.current let rightNow = Date() // 先安全拿到下个月的日期(date(byAdding:)返回可选值,得处理下) guard let nextMonthDate = calendar.date(byAdding: .month, value: 1, to: rightNow) else { // 这里可以加个错误处理,不过这种情况几乎不会发生 print("计算下个月日期失败") return } // 提取下个月的月份数值,和你拿当前月份的逻辑一模一样! let nextMonthOfYear = calendar.component(.month, from: nextMonthDate) // 如果还需要年份,用同样的方式提取就行 let nextYear = calendar.component(.year, from: nextMonthDate) print(nextMonthOfYear) // 比如现在是6月,就会输出7
小提示:
- 为啥要加
guard let?因为date(byAdding:)返回的是Optional<Date>,虽然正常情况下不会返回nil,但做个安全解包能避免潜在的崩溃风险,是Swift里的最佳实践哦。 - 要是当前是12月,这个逻辑会自动帮你处理跨年的情况:比如12月的下个月是1月,提取的月份是1,年份也会自动变成下一年的数值,完全符合你的预期。
内容的提问来源于stack exchange,提问作者Rich
相关产品推荐
相关产品推荐

