2010-06-04 21 views
6

Ich habe 2:01:20 PM Format in einem Etikett; Nach einigen Berechnungen muss ich die Stunde und/oder Minute dieses Etiketts ändern.Wie programmiere ich die Stunde in nsdate?

Das heißt, ist es möglich, diesen Label-Wert zu ändern, indem Sie es als NSDate-Objekt konvertieren und Stunde und Minute wie 3:20:30 PM ändern?

Gibt es irgendwelche Einstellmethoden?

+0

wenn ich [string1 replaceCharactersInRange verwenden: NSMakeRange (0,5) withString: [ NSString stringWithFormat: @ "% d: 0% d", Stunde, finalMinute] Ich muss eine Menge Bedingungen überprüfen, ob die Minute weniger als 10 ist, die Zeichenfolge an 01,02,03 anhängen und wenn die Stunde größer ist als 9 muss ich ändern Bereich, wegen der 12:03:23 PM ..... – mac

Antwort

1

Wenn Sie bestimmte reale Instanzen in der Zeit z. 3:20:30 PM 23. Oktober 2010, dann möchten Sie NSCalendar verwenden, mit dem Sie Daten zerlegen und datumsbezogene Berechnungen durchführen können.

Wort der Warnung. Datums- und Zeitberechnungen sind überraschend komplex und detailliert. Erwarten Sie, dass Sie ein paar Stunden damit verbringen, die API zu lernen.

+0

mein Code ist NSDateFormatter * timeFormatter = [[[[NSDateFormatter Alloc] init] Autorelease]; \t [timeFormatter setDateStyle: NSDateFormatterNoStyle]; \t [timeFormatter setTimeStyle: NSDateFormatterMediumStyle]; \t NSDate * stringTime = [NSDate Datum]; \t NSString * formatiertDateStringTime = [timeFormatter stringFromDate: stringTime]; \t \t // NSLog (@ "die Zeit Zeichenfolge ist% @", formatierteDateStringTime); \t \t time.text = formatierteDatumStringTime; hier ist mein Problem, ich muss die Zeit ändern Stunde, Minute, so, wenn ich oben folgen Kommentar ist es zu schwer, andere Klassen, um es einfach TechZen zu machen. Danke für schnelle Antwort. – mac

25

Die Antwort auf Ihre erste Frage "? wie Stunde Minute in NSDate programmatisch setzen" folgt:

NSDate* result; 
    NSDateComponents *comps = [[NSDateComponents alloc] init]; 
    [comps setMinute:0]; 
    [comps setHour:0]; 
    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
    result = [gregorian dateFromComponents:comps]; 
    [comps release]; 
+0

Es wählt das Datum als "0001-01-01" aus. Wie aktualisiere ich das aktuelle Datum? – Satyam

+1

So können Sie das aktuelle Datum in Komponenten festlegen: 'NSDateComponents * components = [Kalenderkomponenten: NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate: [NSDate Datum]]; ' – iBug