2016-07-25 13 views
-1

ich zweimal sowohl in String-Format haben:Vergleich AM und PM (NSDate)

timeOne = "12:58 AM" 
timeTwo = "1:05 PM" 

ich wandeln sie in NSDate wie diese

func convertTime(tim: String) -> NSDate{ 
let strDate = tim 
let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "HH:mm a" 
//converts into NSDate so we can find the time remaining 
return (dateFormatter.dateFromString(strDate))! 
} 

let tOne = convertTime(timeOne) 
let tTwo = convertTime(timeTwo) 

Umwandlung Ton und TTwo gibt mir

tOne = 2000-01-01 00:58:00 +0000 
tTwo = 2000-01-01 12:05:00 +0000 

Ich vergleiche die beiden Zeiten, aber ich will, dass es 7 Minuten zurückgibt, während ich bekommen '667' Der cod e vergleichen ist:

let calendar = NSCalendar.currentCalendar() 
let components = calendar.components(.Minute, fromDate: tOne, toDate: tTwo, options: []) 
print(components) 

Diese

667 

aus druckt aber es sind die gleiche AM oder PM, wenn die beiden mal funktioniert, was ich damit meine ist, dass sagen wir

tOne = "1:06 PM" 
tTwo = "1:15 PM" 

mit dem Vergleich Code es erfolgreich "9"

+0

Was ist der Wert von 'tOne' und' tTwo' in Ihrem Beispiel? – Larme

+5

Ich glaube, Sie irren sich in der Verwendung von morgens - 12:58 Uhr ist nur als 00:58, nicht 12:58, was wäre p.m. = * Postmeridian * - d.h. "nach Mittag". Daher sind es 11 Stunden 7 Minuten = 667 Minuten zwischen den Zeiten. – Grimxn

+0

Ich habe es bearbeitet Überprüfen Sie den Wert –

Antwort

1

Ihr Verständnis ng von am und pm mal scheint falsch zu sein.

Die Zeiten sind nicht 7 Minuten in Differenz, der erste ist kurz nach Mitternacht, der zweite 65 Minuten nach Mittag.

enter image description here

Wenn Sie Ihren Code zu beheben, wie martinR vorgeschlagen, wird die richtige Differenz 12 Stunden und 7 Minuten.

+0

Danke, es funktioniert jetzt! –