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