dateByAddingTimeInterval问题

时间:2015-06-30 13:01:52

标签: ios swift parse-platform

您好我正在尝试使用dateByAddingTimeInterval将天数添加到当前日期。它没有显示任何错误,但是当我提交表单时应用程序崩溃了:

 var newDate = NSDate()
        var dateFormatter = NSDateFormatter()
        dateFormatter.dateFormat = "dd MMM, yyyy"
        var interval: Double!

        if self.unit == "D" {
            var aTime = Double(loadTime.toInt()!) * 24 * 60 * 60
            var interval = NSTimeInterval(aTime)
        } else if self.unit == "H" {
            var aTime = Double(loadTime.toInt()!) * 60 * 60
            var interval = NSTimeInterval(aTime)
        }

        var EndDate = newDate.dateByAddingTimeInterval(interval)
        var EndDateStr = dateFormatter.stringFromDate(EndDate)
        product["loadEndDate"] = EndDateStr

Debug导航器显示此行的错误:             var EndDate = newDate.dateByAddingTimeInterval(interval)

有人可以告诉我哪里做错了吗?我经历了许多在线帮助,但没有发现任何可以帮助我的情况。

提前致谢,

3 个答案:

答案 0 :(得分:1)

let today = NSDate()
let tommorrow = NSCalendar.currentCalendar().dateByAddingUnit(.CalendarUnitDay, value: 1, toDate: today, options: nil)

答案 1 :(得分:0)

每个var关键字都会创建一个新变量,您将在if - else表达式中创建新的区间变量,并在大括号之间使用范围。第一个区间变量,后来使用的是nil

改进语法

    var newDate = NSDate()
    var dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "dd MMM, yyyy"
    let interval: NSTimeInterval // let and not optional

    if self.unit == "D" {
        interval = NSTimeInterval(loadTime.toInt()! * 24 * 60 * 60)
    } else if self.unit == "H" {
        interval = NSTimeInterval(loadTime.toInt()! * 60 * 60)
    }

    var endDate = newDate.dateByAddingTimeInterval(interval)
    var endDateStr = dateFormatter.stringFromDate(endDate)
    product["loadEndDate"] = endDateStr

答案 2 :(得分:0)

这个有用:

 var newDate = NSDate()
    var dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "dd MMM, yyyy"
    var interval: Double! = 0.0

    if self.unit == "D" {
        var aTime = Double(loadTime.toInt()!) * 24 * 60 * 60
        interval = NSTimeInterval(aTime)
    } else if self.unit == "H" {
        var aTime = Double(loadTime.toInt()!) * 60 * 60
        interval = NSTimeInterval(aTime)
    }

    var EndDate = newDate.dateByAddingTimeInterval(interval)
    var EndDateStr = dateFormatter.stringFromDate(EndDate)
    product["loadEndDate"] = EndDateStr

我所做的就是从if循环中删除'var interval'中的'var'(这是非常愚蠢的:P)并给出了interval变量的初始值。但我认为这是'var'搞砸了。

再次感谢,