iDe*_*per 14 calendar ios swift swift3
我试图通过点击按钮获得上个月和下个月,但这改变了我的一年,而不是一个月.
我正在尝试使用此链接但它在Objective-C中.
func firstDateOfMonth(){
let components = calendar.components([.Year, .Month], fromDate: date)
let startOfMonth = calendar.dateFromComponents(components)!
print(dateFormatatter.stringFromDate(startOfMonth)) // 2015-11-01
}
func lastDateOfMonth(){
let components = calendar.components([.Year, .Month, .Day, .Hour, .Minute, .Second], fromDate: date)
let month = components.month
let year = components.year
let startOfMonth1 = ("01-\(month)-\(year)")
var startOfMonth : NSDate?
var lengthOfMonth : NSTimeInterval = 0
calendar.rangeOfUnit(.Month, startDate: &startOfMonth, interval: &lengthOfMonth, forDate: date)
let endOfMonth = startOfMonth!.dateByAddingTimeInterval(lengthOfMonth - 1)
print(dateFormatatter.stringFromDate(endOfMonth))
}
func monthCalculation(){
firstDateOfMonth()
lastDateOfMonth()
}
@IBAction func previousMonthBtnAction(sender: AnyObject) {
let componen = calendar.components([.Day , .Month , .Year], fromDate: date)
componen.month = -1
self.date = calendar.dateFromComponents(componen)!
print(self.date)
}
@IBAction func nextMonthBtnAction(sender: AnyObject) {
}
Run Code Online (Sandbox Code Playgroud)
那么如何在上个月和下个月做到这一点?
Nir*_*v D 40
试试这样吧.
要获得下个月的日期.
Swift 3和Swift 4
let nextMonth = Calendar.current.date(byAdding: .month, value: 1, to: Date())
Run Code Online (Sandbox Code Playgroud)
Swift 2.3或更低
let nextMonth = NSCalendar.currentCalendar().dateByAddingUnit(.Month, value: 1, toDate: NSDate(), options: [])
Run Code Online (Sandbox Code Playgroud)
获取上个月的日期.
斯威夫特3
let previousMonth = Calendar.current.date(byAdding: .month, value: -1, to: Date())
Run Code Online (Sandbox Code Playgroud)
Swift 2.3或更低
let previousMonth = NSCalendar.currentCalendar().dateByAddingUnit(.Month, value: -1, toDate: NSDate(), options: [])
Run Code Online (Sandbox Code Playgroud)
注意:要获取我今天使用的下一个月和上个月的日期,您可以使用您希望下一个月和上个月日期的日期,只需更改NSDate()您的NSDate对象即可.
编辑:对于下个月和前几个月的继续旅行,您需要存储一个日期对象currentDate,当您尝试获取下一个月和上个月时使用该日期对象并更新它.
下个月.
let currentDate = NSCalendar.currentCalendar().dateByAddingUnit(.Month, value: 1, toDate: currentDate, options: [])
Run Code Online (Sandbox Code Playgroud)
上个月.
let currentDate = NSCalendar.currentCalendar().dateByAddingUnit(.Month, value: -1, toDate: currentDate, options: [])
Run Code Online (Sandbox Code Playgroud)
您还可以使用扩展程序来简化操作.
斯威夫特3
extension Date {
func getNextMonth() -> Date? {
return Calendar.current.date(byAdding: .month, value: 1, to: self)
}
func getPreviousMonth() -> Date? {
return Calendar.current.date(byAdding: .month, value: -1, to: self)
}
}
Run Code Online (Sandbox Code Playgroud)
Swift 2.3或更低
extension NSDate {
func getNextMonth() -> NSDate?{
return NSCalendar.currentCalendar().dateByAddingUnit(.Month, value: 1, toDate: self, options: [])
}
func getPreviousMonth() -> NSDate?{
return NSCalendar.currentCalendar().dateByAddingUnit(.Month, value: -1, toDate: self, options: [])
}
}
Run Code Online (Sandbox Code Playgroud)
现在只需从currentDate获取日期.
currentDate = currentDate.getNextMonth()
currentDate = currentDate.getPreviousMonth()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16814 次 |
| 最近记录: |