Swift 3日历添加分钟不会改变一天



在Swift 3中,我无法通过将几分钟添加到一天来更改这一天。时间的变化如预定,但一天不会改变,例如,将180分钟的时间增加到31.10.2016 2200导致31.10.10.2016 0100,而不是01.11.11.2016 0100。

func getDayByAddingMinutes(date: String, minutes: Int) -> String{
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "dd.MM.yyyy hh:mm"
    let calendar = Calendar.current
    let akt = (dateFormatter.date(from: date)! as Date?)!
    let calculatedDate = calendar.date(byAdding: .minute, value: minutes, to: akt )
    print("(akt) +  (minutes)")
    let dateFormatter2 = DateFormatter()
    dateFormatter2.dateFormat = "dd.MM.yyyy"
    let newDate = dateFormatter2.string(from: calculatedDate!);
    print("(date) +  (newDate)")
    return "(newDate)";
}

尝试以下:

func getDayByAddingMinutes(date: String, minutes: Int) -> String{
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "dd.MM.yyyy HH:mm" 
    let calendar = Calendar.current
    let akt = (dateFormatter.date(from: date)! as Date?)!
    let calculatedDate = calendar.date(byAdding: .minute, value: minutes, to: akt )
    print("(akt) +  (minutes)")
    let dateFormatter2 = DateFormatter()
    dateFormatter2.dateFormat = "dd.MM.yyyy"
    let newDate = dateFormatter.string(from: calculatedDate!);
    print("(date) +  (newDate)")
    return "(newDate)";
}

您已经使用过 HH 而不是 HH

希望这对您有帮助:)

let minutes = 1000
let calendar = Calendar.current
let day = "23.01.2017"
let time = "21:15"
let inFormatter = DateFormatter()
inFormatter.locale = Locale(identifier: "en_US_POSIX")
inFormatter.dateFormat = "dd.MM.yyyy HH:mm"
let d2 = inFormatter.date(from: "(day) (time)")!
let calculated = calendar.date(byAdding: .minute, value: minutes, to: d2)
let outFormatter = DateFormatter()
outFormatter.locale = Locale(identifier: "en_US_POSIX")
outFormatter.dateFormat = "dd.MM.yyyy"
var date = outFormatter.string(from: calculated!)

最新更新