指定当前间隔的日期之后的天数
例如:指定日期= 15/01/2016
,今天= 03/01/2016
预期结果:应显示 12天后
答案 0 :(得分:1)
尝试此扩展程序:
extension NSDate{
func relativeDaysFromToday()->String
{
let now = NSDate()
let calendar = NSCalendar.currentCalendar()
let unitFlags:NSCalendarUnit = NSCalendarUnit.Day
let components = calendar.components(unitFlags, fromDate: now, toDate: self, options: [])
return "After \(components.day) days"
}
}
let jan2 = NSDate(timeIntervalSinceNow: 24*60*60*5)
jan2.relativeDaysFromToday()
答案 1 :(得分:1)
试试这个
let startDateString = "03/01/2016" // start date
let endDateString = "15/01/2016" // end date
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd/MM/yyyy"
let startDate:NSDate = dateFormatter.dateFromString(startDateString)!
let endDate:NSDate = dateFormatter.dateFromString(endDateString)!
let gregorian = NSCalendar(calendarIdentifier:NSCalendarIdentifierGregorian)
let components = gregorian?.components(NSCalendarUnit.Day, fromDate: startDate, toDate: endDate, options: .MatchFirst)
let day = components?.day
if day == 0 {
print( "Today")
} else {
print( "After\(Int64(day!)) day(s)")
}
答案 2 :(得分:1)
您可以将以下代码用于Swift 5:
func DateFormat() -> DateFormatter {
let x = DateFormatter()
x.dateFormat = "dd/MM/yyyy"
x.timeZone = TimeZone(abbreviation: "GMT")
return x
}
func secondsToDays (seconds : Int) -> (Int) {
return (seconds / 86400)
}
var dates: Date?
var today: Date?
dates = DateFormat().date(from: "15/01/2016")
today = DateFormat().date(from: "17/01/2016")
let timeInterval = Int(exactly: (today?.timeIntervalSince(dates!))!) ?? 0
print("After", secondsToDays(seconds: timeInterval), "days" ) //After 2 days
答案 3 :(得分:0)
你可以简单地使用NSDateFormatter()
...和NSCalendar()
...尝试这样的事情:
let start = "03/01/2016"
let end = "15/01/2016"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd/mm/yyyy"
let startDate:NSDate = dateFormatter.dateFromString(start)!
let endDate:NSDate = dateFormatter.dateFromString(end)!
let cal = NSCalendar.currentCalendar()
let unit:NSCalendarUnit = NSCalendarUnit.Day
let components = cal.components(unit, fromDate: startDate, toDate: endDate, options: [])
如果我理解你错了,请随时纠正我。最诚挚的问候,Alex
答案 4 :(得分:0)
我建议使用下一种方法进行计算。
func relativeDaysFromToday(startDate: Date, endDate: Date)->String
{
let diffComponents = Calendar.current.dateComponents([.day], from: startDate, to: endDate)
let days = diffComponents.day
return "After \(days ?? 0) days"
}