2016-07-25 3 views
-1

AMとPM(NSDate):私はこの比較Iは、文字列形式の両方で2回を持って

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) 

階調変換のようなNSDateに変換し、tTwoは私に

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

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

私は2回比較しますが、私は '667'を取得している間に7分戻してほしい 比較するためのeがある:それは両方の時間は、私はこれで何を意味同じAMまたはPM ある場合には

tOne = "1:06 PM" 
tTwo = "1:15 PM" 
を言うことができますされて動作しますが

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

これは

667 

を出力します

比較コードを実行すると「9」が出力されます。

+0

あなたの例では、 'tOne'と' tTwo'の値は何ですか? – Larme

+5

私はあなたの午前12時58分の午前12時58分ではなく、00:58としてのみ意味があるのあなたの使用に間違っていると思う。 = *子午線* - つまり「正午以降」。したがって、時間の間に11時間7分= 667分です。 – Grimxn

+0

値を確認しました –

答えて

1

あなたのご理解午前と午後の時間は間違っているようです。

時間差は7分ではなく、最初は真夜中の直後で、正午から2分後の65分です。

enter image description here

MartinRにより示唆されるようにあなたのコードを修正した場合は、正しい違いが12時間7分となります。

+0

ありがとう、それは今働きます! –

関連する問題