J'essaie d'obtenir la différence dans deux objets Date. Je sais comment le faire au fond, qui est comme ceci:Comment calculer la différence en jours pour deux Date dans Swift que les jours commencent à 6 heures au lieu de 0
let date = Date()
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale.current
print(count)
// print(history[count - 1].value(forKey: "multipleURLs") as! [String])
let latestDate = history[count - 1].value(forKey: "date") as! Date
let calendar = Calendar.current
let components = calendar.dateComponents([.year, .month, .day, .hour], from: date)
let nowDate = calendar.startOfDay(for: date)
let lastDate = calendar.startOfDay(for: latestDate)
let diffDateComponent = (calendar as NSCalendar).components([NSCalendar.Unit.year, NSCalendar.Unit.month, NSCalendar.Unit.day], from: lastDate, to: nowDate, options: NSCalendar.Options.init(rawValue: 0))
print("Status Checked" + String(describing: diffDateComponent.day))
Mais je suis en train d'obtenir le résultat en début de journée de 6 heures du matin au lieu de 0.
Je a fait quelque chose comme ceci:
let nowDate = calendar.startOfDay(for: date.addingTimeInterval(-3600))
let lastDate = calendar.startOfDay(for: latestDate.addingTimeInterval(-3600))
Mais cela ne semble pas fonctionner, quelqu'un peut-il m'aider avec ceci?
Pourquoi remontez-vous le temps 6 heures, puis le début de la journée? Vous pourriez revenir à un jour précédent si la date est avant 6 heures. Peut-être que votre question ne reflète pas ce que vous tentez d'accomplir parce que je ne vois pas comment cela va faire ce que vous demandez. Aussi, évitez de forcer vos valeurs 'Optional' avec'! '. Cela peut fonctionner la plupart du temps, mais vous demandez des plantages à l'arrêt. Testez et dépliez-les en toute sécurité. – ColGraff
Cool merci l'homme: P – JoshJoshJosh