Konvertieren „aktuelle Zeit“ auf „Zeit in Minuten seit 00:00“ Berechnung Hilfe

StackOverflow https://stackoverflow.com/questions/1817749

  •  08-07-2019
  •  | 
  •  

Frage

Ich habe nicht NSDate so viel verwendet, so würde ich etwas Hilfe bei einer Berechnung mag ich tue.

Ich habe eine ganze Zahl, die meinen Speichers Schluss Stunde in Minuten seit Mitternacht hat. Grundsätzlich mein Speicher schließt um 05.00 Uhr, das gibt mir die ganze Zahl 1020.

So jetzt ist es 10.45 oder 22.45. Integer seit 00.00 ist 1365, und daraus kann ich sagen,

if (storeHour < currentTime) {
      // closed!
}

Aber ich weiß nicht, wie ich von „22.45“ bekommen, die ich von NSDate haben, um es in eine ganze Zahl konvertieren Zeit seit 00.00 darstellt. Gibt es etwas in NSDate, die mir dabei helfen?

Thx

War es hilfreich?

Lösung

Ich empfehle ein NSDate Objekt mit der Zeit zu speichern, der Laden schließt stattdessen Ihr eigenes Integer-Format zu verwenden. Es ist bedauerlich, dass NSDate sowohl Datum und Uhrzeit Datum darstellt.

In jedem Fall können Sie überprüfen, NSDateComponents . Sie können eine Dienstprogramme Methode wie haben:

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];    
}

Andere Tipps

Eine schnelle Version von dem, was @notnoop hat geantwortet:

func minutesSinceMidnight(start : NSDate) -> Int {

    let units : NSCalendarUnit = [.Hour, .Minute]
    let components = NSCalendar.currentCalendar().components(units, fromDate: start)
    return 60 * components.hour + components.minute
}

Wenn Sie eine andere NSDate haben, die bis Mitternacht gesetzt ist, dann können Sie die timeIntervalSinceDate Methode des NSDate Objekt verwenden, um ein NSTimeInterval zurück mit dem Unterschied zwischen den beiden zu bekommen. Alternativ ist, wenn man immer vergleichen Mitternacht mit der aktuellen Zeit will, könnten Sie die timeIntervalSinceNow Methode auf der Mitternacht NSDate rufen und Sie würden ein NSTimeInterval zurück (wenn auch negativ) mit dem Unterschied, zwischen Mitternacht und der aktuellen Uhrzeit.

NSTimeInterval als double durch den Standard definiert, die eine Anzahl von Sekunden (und alle fraktionierten Sekunden) gilt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top