将"当前时间"转换为"自00:00以来的分钟数"计算帮助

run*_*mad 5 iphone objective-c nsdate

我没有那么多地使用NSDate,所以我想要一些帮助我正在做的计算.

我有一个整数,从午夜开始,我的商店的收盘时间是几分钟.基本上,我的商店在下午5点关闭,这给了我整数1020.

所以现在是10.45PM或22.45.从00:00开始的整数是1365,我可以这样说

if (storeHour < currentTime) {
      // closed!
}
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何从"22.45"得到我从NSDate到将其转换为表示自00:00以来的时间的整数.NSDate中有什么东西可以帮助我吗?

谢谢

not*_*oop 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];    
}
Run Code Online (Sandbox Code Playgroud)

  • 如果将其设为NSDate的类别方法,则无需将日期作为参数传递.只需确保使用您自己的名称空间为类别的方法名称添加前缀. (2认同)

gle*_*ant 6

Swift 5 例如,给出自午夜以来的当前分钟数

let calendar = Calendar.current
let now = Date()

print(getMinutesSinceMidnight())

func getMinutesSinceMidnight() -> Int {
        return (calendar.component(.hour, from: now) * 60 + calendar.component(.minute, from: now))
 }
Run Code Online (Sandbox Code Playgroud)