添加分钟的Swift 3日历不会改变日期

时间:2016-11-24 19:10:31

标签: ios swift xcode nsdate nsdateformatter

在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)";
}

2 个答案:

答案 0 :(得分:0)

试试这个:

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

希望这可以帮助你:)

答案 1 :(得分:0)

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!)