2016-11-14 5 views
0

Ich möchte wissen, wie viele Sekunden noch übrig sind, um eine Stunde zu beenden. Egal zu welcher Uhrzeit?Wie bekomme ich aktuelle Sekunden, um die Stunde zu beenden?

wenn es 05:01:00 dann sollte es geben 3540 Sekunden und wenn es 11:58:40 dann gibt es 80 Sekunden und so weiter. Ich versuche es bei Google zu finden, konnte es aber nicht finden. Vielen Dank im Voraus.

+0

Was möchten Sie tun, wenn es genau zu der vollen Stunde aufgerufen wird? Gibt die aktuelle Stunde oder die nächste Stunde zurück, die genau 60 Minuten später ist? –

Antwort

5

NSCalendar hat Methoden bekommen diese Art von Datum Mathematik zu tun (Sie müssen sicherstellen, um den Fall zu behandeln, in denen es nach Mitternacht ist aber!):

NSDate *now = [NSDate date]; 
NSCalendar *calendar = [NSCalendar currentCalendar]; 
// find next date where the minutes are zero 
NSDate *nextHour = [calendar nextDateAfterDate:now matchingUnit:NSCalendarUnitMinute value:0 options:NSCalendarMatchNextTime]; 
// get the number of seconds between now and next hour 
NSDateComponents *componentsToNextHour = [calendar components:NSCalendarUnitSecond fromDate:now toDate:nextHour options:0]; 
NSLog(@"%ld", componentsToNextHour.second); 
+0

Danke und sehr geschätzt –

-2
NSDate *date1 = [NSDate dateWithString:@"2010-01-01 00:00:00 +0000"]; 
NSDate *date2 = [NSDate dateWithString:@"2010-02-03 00:00:00 +0000"]; 

NSTimeInterval secondsBetween = [date2 timeIntervalSinceDate:date1]; 

Füllen Sie mit den richtigen Zeiten und Daten in den Unterschied in Sekunden

bearbeiten zu bekommen: Eine alternative Methode ist das current zu arbeiten, und als Integer zurück. Dann fügen Sie ein in die NSInteger wie unten zurück

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit fromDate:[NSDate date]]; 
NSInteger currentHour = [components hour]; 
+0

Ich kenne die beiden Zeiten nicht, ich weiß nur die aktuelle Zeit und ich muss herausfinden, wie viele Sekunden diese Stunde zu beenden? –

+0

http://developer.apple.com/documentation/Cocoa/Conceptual/DatesAndTimes/DatesAndTimes.html#//apple_ref/doc/uid/10000039 – stevenpcurtis

+0

Geben Sie die aktuelle Stunde zurück und berechnen Sie die aktuelle Stunde + 1- (NSInteger) currentHour { // In der Praxis können diese Anrufe kombiniert werden NSDate * jetzt = [NSDate Datum]; NSCalendar * Kalender = [NSCalendar currentCalendar]; NSDateComponents * Komponenten = [Kalenderkomponenten: NSHourCalendarUnit fromDate: now]; zurück [Komponenten Stunde]; } – stevenpcurtis

0

@ Vadian's Antwort ist sehr gut. (Abstimmung)

Es erfordert iOS 8 oder später jedoch.

Es gibt andere Möglichkeiten, die Sie mit NSCalendar und NSDateComponents tun könnten, die mit älteren Betriebssystemversionen funktionieren würden.

Sie könnten componentsFromDate verwenden Sie den Monat, Tag, Jahr und Stunde ab dem aktuellen Datum zu erhalten, dann den Stundenwert erhöht und die NSCalendar Methode dateFromComponents: verwenden Ihre einzustellenden Komponenten zurück auf ein Datum zu konvertieren.

Verwandte Themen