2016-07-25 95 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

谢谢,它现在可行! –