Swift 3 日历加分不改日

Swift 3 Calendar adding Minutes does not change day

在 Swift 3 我无法通过在一天中增加分钟数来更改日期。时间像它应该的那样变化,但日期没有变化,例如将 180 分钟添加到 31.10.2016 2200 导致 31.10.2016 0100 而不是 01.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!)