我有一系列日期如下: -
var dateArray = ["2016-04-20", "2016-04-22", "2016-04-25", "2016-04-30"]
我想知道它们之间的天数差异。我做了一些研究,我能够做到这一点,这里只有两个日期是我找到两个日期之间的差异的方法
let dateFormatter = DateFormatter()
let isoDate = "2016-04-20"
let calendar = NSCalendar.current
let currentDate = Date()
在我的 viewDidLoad 方法中,我做了这个
override func viewDidLoad() {
super.viewDidLoad()
// let components = calendar.dateComponents([.day], from: )
dateFormatter.dateFormat = "yyyy-MM-dd"
dateFormatter.locale = Locale(identifier: "en_US_POSIX") //en_US_POSIX
let formatedStartDate = dateFormatter.date(from: isoDate)
let date = dateArray.compactMap { dateFormatter.date(from: $0) } // for date array
print(date)
let components = Set<Calendar.Component>([.day])
let differenceOfDate = Calendar.current.dateComponents(components, from: formatedStartDate!, to: currentDate )
print (differenceOfDate)
apiData()
}
正如您在代码中看到的,我创建了一个常量让isoDate =“2016-04-20”并更改为 formatedStartDate 并找到此日期之间的差异到目前的日期然后它工作。但是,如果我有自己的日期数组,我怎么能找到我自己的日期数组的差异,并将其分为增加或减少顺序。请帮帮忙?
答案 0 :(得分:3)
创建日期格式化程序
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
dateFormatter.locale = Locale(identifier: "en_US_POSIX") //en_US_POSIX
将日期字符串数组映射到Date
实例
let dateStringArray = ["2016-04-20", "2016-04-22", "2016-04-25", "2016-04-30"]
let dateArray = dateStringArray.map {dateFormatter.date(from: $0)!} // add .sorted() if the array is unordered.
在循环中获取相邻项之间的差异
var differences = [Int]()
for i in 0..<dateArray.count - 1 {
let dayComponent = Calendar.current.dateComponents([.day], from: dateArray[i], to: dateArray[i+1])
differences.append(dayComponent.day!)
}
print(differences)
答案 1 :(得分:1)
我不确定您是否只想比较彼此相邻的日期或比较每个日期。在第一种情况下,请使用int West = u | (((u>>24) - 1) << 24);
解决方案。在另一种情况下,你可以这样做:
vadian