2017-02-27 65 views
1

我正在尝试编写一个函数,它接受一个字符串(格式为“dd MM yyyy”)并返回给定参数之后的那一天。Swift - 获取下一个日期

例如:

let nextDay = getNextDay("31 12 2016") 
print(nextDay) 

将打印:

01 01 2017 

有人能告诉我如何做到这一点?谢谢

+0

如果你不迅速处理日期的工作之前,你可以用这个框架:https://github.com/malcommac/SwiftDate - 在这里还有很多答案中,这样解决问题使用日期,只需使用搜索功能:-) –

回答

5

这里的代码片段可能会帮助你。

//Call method like this 

convertNextDate(dateString: "31 12 2016") 


// Method is here 

func convertNextDate(dateString : String){  
    let dateFormatter = DateFormatter() 
    dateFormatter.dateFormat = "dd MM yyyy" 
    let myDate = dateFormatter.date(from: dateString)! 
    let tomorrow = Calendar.current.date(byAdding: .day, value: 1, to: myDate) 
    let somedateString = dateFormatter.string(from: tomorrow!) 
    print("your next Date is \(somedateString)") 
} 
+0

+1使用'.date(byAdding :, value :, to:)'。堆栈溢出中的很多示例通过添加'24 * 60 * 60'秒错误地计算第二天。 –

+0

谢谢@RoboticCat的欣赏 –

1
class DateHelper 
{ 

    lazy var formatter:DateFormatter = { 
    let formatter = DateFormatter() 
    formatter.dateFormat = "dd MM yyyy" 
    return formatter 
}() 

    lazy var dateComponents:DateComponents = { 
    var dateComp = DateComponents() 
    dateComp.day = 1 
    return dateComp 
}() 

    func getNext(dateString:String) -> String? 
    { 
    if let date  = self.formatter.date(from: dateString), 
     let nextDate = Calendar.current.date(byAdding: self.dateComponents, to: date) 
    { 
     return self.formatter.string(from: nextDate) 
    } 
    return nil 
    } 
} 

DateHelper().getNext(dateString: "31 12 2016") 
相关问题