私は現在の月のデータカレンダーで作業しています と私は計算の3タイプを表示する必要があります(昨日 - 今日 - 明日)swift 3明日と昨日の日付を取得する方法(特別な場合に注意してください)新しい月または新年
ため、私は特別なケース のためのバウンドのうち(インデックス)のクラッシュを持っているように、今日の日付(2017年5月31日) と私は私のアプリを続けると私は意志計算明日を起動しようとする場合、私は月の月の配列を持っている場合エラー[私は明日の新月を知るはずだから]
これは私のコードです
class ViewController: UIViewController {
var dateComponents: DateComponents!
var TimeToday :[String] = []
var TimeTomorrow :[String] = []
var TimeYesterday :[String] = []
override func viewDidLoad() {
super.viewDidLoad()
let dateDay = Date()
let calendar = Calendar(identifier: .gregorian)
dateComponents = calendar.dateComponents([.day, .month, .year], from: dateDay)
done()
}
func done() {
//------ for tomorrow ------
// month end day 31
if (dateComponents.day! == 30){
if(dateComponents.month! == 1 || dateComponents.month! == 4 || dateComponents.month! == 6 || dateComponents.month! == 7 || dateComponents.month! == 9 || dateComponents.month! == 11){
TimeTomorrow.append("\(dateComponents.month!+1)")
}
// month end day 31
}else if (dateComponents.day! == 31){
if(dateComponents.month! == 3 || dateComponents.month! == 5 || dateComponents.month! == 8){
TimeTomorrow.append("\(dateComponents.month!+1)")
}else if(dateComponents.month! == 12){
TimeTomorrow.append("\(dateComponents.year!+1)")
}
// month end day 29
// special case for leap year i donot know how find it
//****************************************************
else if (dateComponents.day! == 29){
if(dateComponents.month! == 2 || dateComponents.month! == 10 ){
TimeTomorrow.append("\(dateComponents.month!+1)")
}
}
//------ for yesterday ------
if (dateComponents.month! == 12 || dateComponents.month! == 10 || dateComponents.month! == 8 || dateComponents.month! == 7 || dateComponents.month! == 5 || dateComponents.month! == 2){
var day = dateComponents.date! - 1
//fatal error: unexpectedly found nil while unwrapping an Optional value
TimeYesterday.append("\(day)")
TimeYesterday.append("30 - \(dateComponents.month! - 1)")
}else {
//////
}
}
}
}
スウィフト3コード:// stackoverflow.com/a/27048988/1187415 –