2016-07-25 89 views
-1

我有兩次都在字符串格式:比較AM和PM(NSDate的)

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

我將它們轉換成NSDate的這樣

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) 

轉換語調和TTWO輸出我

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

我比較兩次,但我希望它返回7分鐘,而即時獲得'667' 鱈魚E要比較的是:

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

此打印出

667 

但是它的工作原理,如果這兩個時間是相同的上午或下午 什麼,我的意思是,讓說

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

運行比較代碼就成功輸出「9」

+0

你的例子中'tOne'和'tTwo'的價值是什麼? – Larme

+5

我覺得你在使用a.m.時錯了 - 上午12:58只有00:58纔有意義,而不是12:58,這將是下午。 = *發佈子午線* - 即「中午之後」。因此,時間之間爲11小時7分鐘= 667分鐘。 – Grimxn

+0

我編輯它檢查值 –

回答

1

你明白了上午和下午時間似乎是錯誤的。

時間不是7分鐘的差異,第一次是在午夜之後,第二次65分鐘之後。

enter image description here

如果您解決您的代碼通過MartinR的建議,正確的差爲12小時7分鐘。

+0

謝謝,它現在可行! –