我没有那么多地使用过NSDate,所以我想帮助我做一些计算。
我有一个整数,从午夜开始我商店的营业时间以分钟为单位。基本上,我的商店在下午5点关闭,这给了我整数1020。
现在是下午10点45分或22点45分。从00:00开始的整数是1365,从中我可以说
if (storeHour < currentTime) {
// closed!
}
但是,我不知道如何从“22.45”获得我从NSDate到将其转换为表示自00:00以来的时间的整数。 NSDate中有什么东西可以帮助我吗?
THX
答案 0 :(得分:7)
我建议使用NSDate
对象来存储商店关闭的时间,而不是使用您自己的自定义整数格式。不幸的是,NSDate
代表了约会的日期和时间。
无论如何,您可以查看NSDateComponents
。您可以使用以下实用程序方法:
int minutesSinceMidnight:(NSDate *)date
{
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
unsigned unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit;
NSDateComponents *components = [gregorian components:unitFlags fromDate:date];
return 60 * [components hour] + [components minute];
}
答案 1 :(得分:3)
@notnoop回复的快速版本:
func minutesSinceMidnight(start : NSDate) -> Int {
let units : NSCalendarUnit = [.Hour, .Minute]
let components = NSCalendar.currentCalendar().components(units, fromDate: start)
return 60 * components.hour + components.minute
}
答案 2 :(得分:1)
如果你有另一个NSDate
设置为午夜,那么你可以使用NSDate对象的timeIntervalSinceDate
方法来获得NSTimeInterval
两个之间的差异。或者,如果您总是希望将午夜与当前时间进行比较,则可以在午夜NSDate上调用timeIntervalSinceNow
方法,然后您将获得NSTimeInterval
返回(虽然为负数)午夜和当前时间。
NSTimeInterval
被标准定义为double
,其持有若干秒(以及任何小数秒)。