J'essaie de comparer deux dates, l'une est du serveur et d'autres est mon temps de périphérique local.
Ceci est un extrait de code. strong> p> let deviceDate = Date()
let calendar = Calendar.current
let dateNewServer = calendar.date(byAdding: .minute, value: 120, to: dateFromServer!)
//deviceDate -> 2019-06-25 08:28:03 +0000
//dateFromServer -> 2019-06-21 20:00:00 +0000
//dateNewServer -> 2019-06-21 22:00:00 +0000
if (deviceDate >= dateFromServer) && (deviceDate <= dateNewServer){
print("Live Matches")
}else{
print("Old/Upcoming Matches")
}
3 Réponses :
C'est parce que vous essayez de comparer des types facultatifs (date) et de date. Essayez de débrancher votre De plus, vous comparez Datefromserver code> variable.
Par exemple, date code> et string code> ici Devicedate <= "\ (DATENEWSERVER)" CODE > p> p>
func isLessThanDate(dateToCompare: Date) -> Bool {
//Declare Variables
var isLess = false
//Compare Values
if self.compare(dateToCompare as Date) == ComparisonResult.orderedAscending {
isLess = true
}
//Return Result
return isLess
}
func isGreaterThanDate(dateToCompare: Date) -> Bool {
//Declare Variables
var isGreater = false
//Compare Values
if self.compare(dateToCompare as Date) == ComparisonResult.orderedDescending {
isGreater = true
}
//Return Result
return isGreater
}
Date de FUNC (Composant de byadding: Calendar.common, Valeur: Int, à ce jour:
Date, emballageComponents: BOOL = Default) -> Date? P>
blockQuote> Solution: strong> le déballer à l'aide de la liaison optionnelle em> DATENEWSERVER code> est un en option code>. Vous devez donc la débrouiller avant d'utiliser plus loin. C'est ce que dit votre erreur.
(si let) code> ou ou déformation forcée em> < code> (!) code>. la liaison optionnelle em> est plus plus sûre de déballer un en option code>. p>
Quelle est la valeur de
datefromserver code>?C'est une date de type UTC, je reçois du serveur (2019-06-21 20:00:00 +0000)