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)